當前位置:首頁 » 論文設計 » android黑白棋畢業設計
擴展閱讀
中國網路原創新人樂團 2021-03-31 20:26:56
黨政視頻素材 2021-03-31 20:25:44
廈門大學統計學碩士 2021-03-31 20:25:36

android黑白棋畢業設計

發布時間: 2021-03-24 05:25:57

⑴ java網路黑白棋課程設計報告

哥們 你肯定是山大的

⑵ 急求Java黑白棋設計源代碼

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import javax.swing.JOptionPane.*;

public class FiveChess
{
public static void main(String[] args)
{
JFrame myFrame = new JFrame("快樂五子棋");
myFrame.getContentPane().add(new MyPanel());
Toolkit mykit = myFrame.getToolkit();
Dimension mysize = mykit.getScreenSize();
myFrame.setBounds(0,0,mysize.width,mysize.height - 40);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.show();
}
}

class MyPanel extends JPanel implements MouseListener
{
private Point start = new Point(0,0);
private Point next = new Point(0,0);
boolean[][] chessBo = new boolean[19][19];
boolean chessCo = true; //判斷顏色的,true 黑
boolean winchess = true; //true,為勝利

MyPanel(){
addMouseListener(this);
setBackground(Color.blue);
}
public boolean winkill(int x,int y) //win ?
{
int countBlack = 0,countWhite = 0;
boolean winchess01 = false;
//x,y 取到r01,r02的值
for(int i = 0;i < 5;i++)//判斷縱向下
{
if((x + i) > 20)
break;
if(chessCo && chessBo[x + i][y])
countBlack++;
else if(chessBo[x + i][y] && (chessCo == false))
countWhite++;
}
for(int i = 0;i < 5;i++)//判斷縱向上
{
if((x - i) <= 0)
break;
if(chessCo && chessBo[x - i][y])
countBlack++;
else if(chessBo[x - i][y] && (chessCo == false))
countWhite++;
}
if((countBlack == 5) || (countWhite == 5))
winchess01 = true;
return winchess01;
}
public void paint(Graphics g)//畫棋盤
{
Graphics2D g2D = (Graphics2D)g;

g2D.setPaint(Color.black);
float pay = 60.0f,pbx = 60.0f;
float lett = 25.0f;
Point2D.Float p1 = new Point2D.Float(60.0f,pay);
Point2D.Float p2 = new Point2D.Float(510.0f,pay);
Point2D.Float p3 = new Point2D.Float(pbx,60.0f);
Point2D.Float p4 = new Point2D.Float(pbx,510.0f);
for(int i=0;i<19;i++){
Line2D.Float lineH = new Line2D.Float(p1,p2);
Line2D.Float lineV = new Line2D.Float(p3,p4);
pay += lett;
p1 = new Point2D.Float(60.0f,pay);
p2 = new Point2D.Float(510.0f,pay);
pbx += lett;
p3 = new Point2D.Float(pbx,60.0f);
p4 = new Point2D.Float(pbx,510.0f);
g2D.draw(lineH);
g2D.draw(lineV);
}
}
public void mousePressed(MouseEvent evt)
{
}
public void mouseClicked(MouseEvent evt)
{
int x = evt.getX();
int y = evt.getY();
int clickCount = evt.getClickCount();
if(clickCount >=1 ){
if((x > 48 && x < 522) && (y > 48 && y < 522))
draw(x,y);
}
}

public void draw(int dx,int dy)
{
int r01 = 0,r02 = 0;
Graphics g = getGraphics();
start.x = dx;
start.y = dy;
r01 = (start.x + 13 - 60) / 25; //r01 、r02當前的格子
r02 = (start.y + 13 - 60) / 25;
//System.out.println(r01 + "-" + r02);
next.x = 25 * r01 + 60 - 11;
next.y = 25 * r02 + 60 - 11;
//System.out.println(next.x + "-" + next.y);
if(chessCo){
chessCo = false;
g.setColor(Color.black);
g.fillOval(next.x,next.y,20,20);
chessBo[next.x][next.y] = true;//用這個時,黑白子可交替出現,
//chessBo[r01][r02] = true;//用這個代替上面那個時黑白子不可交替了,不知道為什麼會這樣
//加入判斷勝負的方法winkill()
if(winchess == winkill(r01,r02))
showMessage();
}
if(!chessCo){
chessCo = true;
g.setColor(Color.white);
g.fillOval(next.x,next.y,20,20);

chessBo[r01][r02] = true;
}
//g.drawOval(next.x,next.y,20,20);
g.dispose();
}

public void mouseReleased(MouseEvent evt)
{
}

public void mouseEntered(MouseEvent evt)
{
}

public void mouseExited(MouseEvent evt)
{
}
public void showMessage()
{
JOptionPane.showMessageDialog(null,
"You are win.",
"wide288 to Message!",
JOptionPane.INFORMATION_MESSAGE);
}
}

⑶ 求五子棋vc++做的畢業設計

發給你了,希望對你有所幫助!

⑷ 黑白棋的設計思路

關鍵是電腦演算法的問題,其實要實現雙人對戰是很簡單的。至於電腦下子的演算法..這個你得個專門的論文看看,要對黑白棋有很深的了解,或者直接剽竊別人的研究結果也可以,呵呵
設計思路
1.main()主函數
在主函數中,棋盤狀態用數組a[8][8],初值為0,表示空格。用圖形系統畫出棋盤,調用playtoplay()人人對弈函數開始游戲,一旦游戲結束後,關閉圖形系統,程序結束。
2.DrawQp()畫棋盤函數
背景顏色設為藍色,從坐標(100,100)開始每隔40個單位用白色畫一條水平直線,一條垂直線,構成棋盤,用循環語句實現。函數setfillstyle()可以設置填充模式和填充顏色,fillellipse(int x,int y,xradius,int yradius)以x和y為圓心,xradius和yradius為水平和垂直軸畫一填充橢圓,當xradius和yradius相等時,則畫出的是圓,用它表示棋子。
3.SetPlayColor()設置棋子的顏色
函數的參數為整型變數t,根據t的值來設計填充棋子的當前顏色,值為1代表白棋,值為2代表黑棋。
4.MoveColor()恢復原來格子的狀態
由於棋手在走棋的時候,他的棋子總是首先出現在棋盤的左上角,棋手要通過移動游標走到要落子的位置,在經過的路程上顯示當前棋子,就會覆蓋原來的棋盤狀態,所以一旦棋子走過後,就應恢復原來的狀態,是空格的依然顯示空格,是棋子的就顯示原來棋子的顏色。因為棋子移動過程並沒有改變數組元素的值,所以可以根據數組元素的值判定原來的狀態,如果值是1,就恢復白色棋子,值是2則恢復黑色棋子,否則恢復藍色空格。
5.playtoplay()人人對戰函數
這是游戲進行的函數,主要是接收棋手的按鍵消息,其處理過程如下:
按Esc鍵程序可以隨時結束。
按上下左右游標鍵,則改變棋子移動的坐標值。
按回車鍵後判斷。
6.QpChange()判斷棋盤變化
當棋手按回車鍵落子後,就要分別往8個方向判斷是否包圍住對方棋子,如果是,則改變棋盤,也就是棋盤上黑白棋子的個數要發生變化。如果所有方向都判斷過,並且沒有引起棋盤的變化,則棋盤變化標志值yes為0,返回yes,結束本函數。
7.DoScore()處理分數
根據當前數組元素的值判斷分數,也就是各方棋子的個數,如果數組元素值為1,白棋棋子數累加;如果數組元素值為2,則黑棋棋子數累加。
8.PrintScore()輸出成績
利用設置實體填充模式填充矩形條清除掉前次的成績,再利用sprintf()函數將整數轉換為字元串的形式,再利用outtextxy()函數將成績輸出。
9.playWin()輸出勝利者結果
根據分數值score1和score2的大小得出下棋的結果,輸出贏者信息。

⑸ 為什麼選擇黑白棋游戲設計這個課題

因為有圍棋就夠啦!黑白棋也是圍棋分解出來的一個分支 ...是不是你升級了新版找不到了,黑白棋顯然還有。另外不同意樓上的意見,圍棋是圍棋,黑白棋是...

⑹ 求一份基於JAVA的黑白棋設計方案及源代碼,最好有UML圖設計的。 十分感謝

基於JAVA的黑白棋設計方案及源代碼,最好有UML圖設計
當然,我
可以好

⑺ 黑白棋的策略技巧

先說技巧——

1、黑白棋分黑子和白子,游戲開始後,黑子先下。游戲開始游戲界面中會出現 兩黑兩白四枚棋子。

(7)android黑白棋畢業設計擴展閱讀:

1、黑方先行,雙方交替下棋。

2、一步合法的棋步包括:在一個空格新落下一個棋子,並且翻轉對手一個或多個棋子。

3、新落下的棋子與棋盤上已有的同色棋子間,對方被夾住的所有棋子都要翻轉過來。可以是橫著夾,豎著夾,或是斜著夾。夾住的位置上必須全部是對手的棋子,不能有空格。

4、一步棋可以在數個方向上翻棋,任何被夾住的棋子都必須被翻轉過來,棋手無權選擇不去翻某個棋子。

5、除非至少翻轉了對手的一個棋子,否則就不能落子。如果一方沒有合法棋步,也就是說不管他下到哪裡,都不能至少翻轉對手的一個棋子,那他這一輪只能棄權,而由他的對手繼續落子直到他有合法棋步可下。

6、如果一方至少有一步合法棋步可下,他就必須落子,不得棄權。

7、棋局持續下去,直到棋盤填滿或者雙方都無合法棋步可下。

⑻ 用java設計黑白棋游戲

沒分?這個看誰有現成的給上來吧.

⑼ 急求 c語言游戲黑白棋的設計思路

樓上說的有理
鄙人就說說簡單的雙人對戰吧
首先可以用二維數組表示棋盤(比方可以是int[][],元素回為「1」表示玩家甲的答棋子,「2」表示玩家乙...)
然後寫一個函數實現如下功能:
每下一子,就利用下標檢測此子周圍8個元素(邊上的沒有這么多,就要通過下標的限制了)有沒有相同的,有的話,累計(要考慮分4種情況累計,橫豎斜),並調用相應方向的函數檢測那些相同的元素,沒有就跳過繼續。
再寫四個函數(檢測橫豎斜4個方向的)
最後主函數
最最後。。。完善。。。!!!!!

說的不對的請指教