当前位置:首页 » 论文设计 » 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个方向的)
最后主函数
最最后。。。完善。。。!!!!!

说的不对的请指教