freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java五子棋畢業(yè)設計論文(編輯修改稿)

2025-07-25 08:22 本頁面
 

【文章內(nèi)容簡介】 獲得鼠標點擊的坐標然后換算成對應的棋盤的位置,再判斷此處是否有棋子,假如沒有,那么在此處畫出對應顏色的實心棋子,假如已經(jīng)有棋子了,則提示玩家此處已經(jīng)有棋子請重新下棋。 5. 當選擇的是人機對弈模式的時候,輪到電腦下子時,電腦會通過算法計算每個沒有棋子的位置的重要性來選擇最重要的位置下子。 6. 人機對弈算法簡介: 本款游戲最核心的地方就是算法,因為這是整個程序最難的模塊。算法的中心思想是:利用分數(shù)代表每個位置的重要程度,越重要的位置的分數(shù)值會越高,當電腦下棋時會先將電腦和玩家棋型的分數(shù)分別計算一遍,然后選擇二者中分數(shù)最高的點下子。如果玩家的分數(shù)高,那么代表電腦應該防守,如果電腦的分數(shù)高,那么代表電腦應該進攻。 具體的分數(shù)值賦值如下:分數(shù)電腦玩家活二6050半活二4035死二1010半死二1010活三950700半活三900650死三100100半死三100100活四60003500半活四50003000死四4000800半死四3600750活五2000015000半活五100003300死五2000015000半死五100003300解釋一下其中的活,半活,死,半死:活:代表幾個子是相連的,中間沒有空格,兩端都至少有一個空格。半活:代表幾個子不是相連的,幾個子中間有一個空格,兩端都至少有一個空格。死:代表幾個子是相連的,中間沒有空格,但有一端緊挨著對方的棋子或有一端正好在棋盤的邊界。半死:代表幾個子不是相連的,幾個子中間有一個空格,而且一端緊挨著對方的棋子或有一端正好在棋盤的邊界。 每個位置的分數(shù)的計算方式是各個方向的分數(shù)相加,最后找出電腦棋型和玩家棋型的分數(shù)的最高的位置為電腦的下棋點下棋。 7. 當任何一方有五個棋子沿著橫,豎,斜連在一起時,系統(tǒng)自動判斷贏棋,并顯示黑方或白方勝利。棋局結束后,任何一方均不能繼續(xù)操作。 :圖51 程序流程圖 程序設計這個游戲程序包含兩個類:DrawPanel:棋盤類,用于繪畫棋盤及棋子。PlayerVsPC:主程序類,窗口的創(chuàng)建和整個邏輯程序代碼。類DrawPanel代碼:package resource。import 。import 。import 。import 。import 。import 。import 。public class DrawPanel extends JPanel{ private int[][] a。 private int n,m。 public DrawPanel(int k[][],int n1,int m1){ a=k。 n=n1。 m=m1。 } public void paintComponent(Graphics g){ (g)。 Graphics2D g2=(Graphics2D)g。 Graphics2D g3=(Graphics2D)g。 double X=20。 double Y=20。 double width=480。 double height=480。 double jiange=30。 // 畫棋盤網(wǎng)格 for(int i=0。i=width/jiange。i++){ (new (X+i*jiange,Y,X+i*jiange,height+Y))。 (new (X,Y+i*jiange,width+X,Y+i*jiange))。 } //畫中間點的標記 ()。 (new (254,245,254,254))。 (new (245,254,254,254))。 (new (267,245,267,254))。 (new (267,254,275,254))。 (new (245,266,254,266))。 (new (254,266,254,275))。 (new (266,275,266,266))。 (new (266,266,275,266))。 //畫旗子 for(int i=1。i。i++){ for(int j=1。ja[i].length1。j++){ Ellipse2D circle=new ()。 (j*3025, i*3025, 28, 28)。 if(a[i][j]==1){ ()。 (circle)。 }else if(a[i][j]==2){ ()。 (circle)。 } } } //畫旗子上的標記 if(n0amp。amp。m0){ ()。 (new BasicStroke())。 (new (30*m16,30*n16,30*m4,30*n4))。 (new (30*m16,30*n4,30*m4,30*n16))。 } } }類PlayerVsPC代碼:package resource。import 。import 。import 。import 。import 。import 。import 。import 。import 。import 。import 。import 。import 。import 。public class PlayerVsPC { private JFrame frame。 //整個窗口 private JMenuBar bar。 //菜單欄 private JMenuItem[][] jit。//菜單項數(shù)組 private JMenuItem[] mode。//模式項數(shù)組 private JMenu[] jm。 //菜單 public boolean isBlack。 //是否為黑方下子狀態(tài) private int[][] qipan。 //棋盤數(shù)組 private int row。 //當前行 private int col。 //當前列 private int prow。 private int pcol。 private Color c=new Color(145,125,62)。 //棋盤背景顏色 private DrawPanel panel。 //棋盤面板 private JLabel label。 //棋盤上方的標簽 private JPanel panel0。 //棋盤上方條形面板 private boolean isEnd。 private int[][] qixingPC。 private int[][] qixingPlayer。 private boolean isPC = true。 //記錄當前下棋模式 private boolean cMode = true。 //記錄選擇的對弈模式 public PlayerVsPC(){ frame=new JFrame(五子棋游戲)。 bar=new JMenuBar()。 jm=new JMenu[2]。 jit=new JMenuItem[2][]。 qipan=new int[19][19]。 qixingPC = new int[17][17]。 qixingPlayer = new int[17][17]。 for(int i=0。i19。i++){ for(int j=0。j19。j++){ qipan[i][j]=0。 } } for(int i=0。i17。i++){ for(int j=0。j17。j++){ qixingPC[i][j]=0。 qixingPlayer[i][j]=0。 } } label = new JLabel(人+(isPC?機:人)+對弈模式,請按開局開始游戲!)。 panel0=new JPanel()。 addItems()。 addEventAction()。 printqipan(0,0)。 } public void addItems(){ jm[0]=new JMenu(游戲)。 jm[1]=new JMenu(選項)。 jit[0]=new JMenuItem[3]。 jit[0][0]=new JMenuItem(開局)。 jit[0][1]=new JMenuItem(重新開始)。 jit[0][2]=new JMenuItem(結束游戲)。 jit[1]=new JMenuItem[3]。 jit[1][0]=new JMenu(對弈模式)。 mode=new JMenuItem[2]。 mode[0] = new JMenuItem(人人對弈)。 mode[1] = new JMenuItem(人機對弈)。 jit[1][0].add(mode[0])。 jit[1][0].add(mode[1])。 jit[1][1]=new JMenuItem(悔棋)。 jit[1][2]=new JMenuItem(背景顏色)。 for(int i=0。i。i++){ for(int j=0。jjit[i].length。j++){ jm[i].add(jit[i][j])。 } } (label)。 (jm[0])。 (jm[1])。 (bar)。 (panel0,North)。 } //給菜單項設定事件 public void addEventAction(){ jit[0][0].addActionListener(new ActionListener(){ //開局 public void actionPerformed(ActionEvent e) { row=prow=0。col=pcol=0。 isPC=cMode。 isBlack = true。 isEnd = false。 for(int i=0。i19。i++){ for(int j=0。j19。j++){ if(i==0||j==0||i==()||j==()){ qipan[i][j] = 1。 }else{ qipan[i][j]=0。 } } } if(isPC){ //人機對弈模式 (游戲開始,請玩家先下棋!)。 }else{ //人人對弈模式 (游戲開始,請+(isBlack?黑:白)+方先下棋!)。 } printqipan(row,col)。 addEventHandler()。 } })。 jit[0][1].addActionListener(new ActionListener(){ //重新開始 public void actionPerformed(ActionEvent e) { row=prow=0。col=pcol=0。 isBlack = true。 isEnd = false。 for(int i=0。i19。i++){ for(int j=0。j19。j++){ if(i==0||j==0||i==()||j==()){ qipan[i][j] = 1。 }else{ qipan[i][j]=0。 } } } if(isPC){ //人機對弈模式 (游戲開始,請玩家先下棋!)。 }else{ //人人對弈模式 (游戲開始,請+(isBlack?黑:白)+方先下棋!)。 } printqipan(row,col)。 addEventHandler()
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1