五子棋小游戏
}
}
public void updeta(Graphics g){
this.paint(g);
}
public void victory(int x,int y,Vector contain){ //判断胜利的方法
int cv=0; //计算垂直的变量
int ch=0; //计算水平的变量
int ci1=0; //计算斜面的变量1
public void victory(int x,int y,Vector contain){ //判断胜利的方法
int cv=0; //计算垂直的变量
int ch=0; //计算水平的变量
int ci1=0; //计算斜面的变量1
int ci2=0; //计算斜面的变量2
for(int i=1;i<5;i++){
System.out.println("已有棋了");
}
else{
v.add(x+"-"+y);
this.repaint();
if(v.size()%2==0){
black.add(x+"-"+y);
this.victory(x, y,black);
System.out.println("黑棋");
for(int i=0;i<15;i++){
g.drawLine(pxw+i*w,py,pxw+i*w,hline);//每条横线和竖线
g.drawLine(px,pyw+i*w,vline,pyw+i*w);
}
(2)建立判断胜利的方法victory()并采用有参函数传递
采用if-else的方法实现输赢
软件环境:Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
2.2详细设计
2.2.1程序流程图
图1系统流程图
(1)棋盘的绘制为主模块
(2)建立两个玩家
(3)每人走一步
(4)如果有五个连续的棋子,就判断其胜利
[3]张辉,《JAVA程序设计》[M].清华大学出版社,2006.2
[4]丁振凡,《java语言实用教程》[M].北京邮电大学出版社,2007.4
[5]耿祥义,《Java基础教程》[M].清华大学出版社,2009.8
[6]张仿彦,《JAVA项目开发全程实录》[M].北京大学出版社,2009.4
6.附录
g.clearRect(0, 0, this.getWidth(), this.getHeight()); //清除面板
g.setColor(Color.BLACK); //设置网格颜色
g.drawRect(px, py, width, height); //网格大小
g.drawString("简易五子棋", 110, 70);
2.1.1系统功能描述
(1)显示黑棋玩家
(2)显示白棋玩家;
(3)显示棋数
(4)实现电脑可以自动下棋
(5)扫描整个棋盘记录连在一起的黑白棋子数;
(6)实现人与电脑有次序的下棋
(7)判断人与电脑的胜负
(8)电脑估计
2.1.2系统开发环境
硬件环境:Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。
开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。
int ci2=0; //计算斜面的变量2
for(int i=1;i<5;i++){
if(contain.contains((x+i)+"-"+y))
ch++;
else
break;
}
System.out.println("前面执行了"+ch+"次");
for(int i=1;i<5;i++){
if(contain.contains((x-i)+"-"+y))
总之通过本次实验,掌握了使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识解决实际问题的能力。提高面向对象程序设计的能力。
5.参考文献
[1]Merlin HughesMichael Shoffner,《Java网络编程实例》[M].清华大学出版社,2006.6
[2]耿祥义,《JAVA 2实用教程》[M].清华大学出版社,2008.4
tool.add(btnstop);
this.setSize(550,500);//设置窗体大小
this.setVisible(true);
}
int w=20; //间距大小是双数
int px=100,py=100; //棋盘的坐标
int pxw=(px+w), pyw=(py+w);
int width=w*16,height=w*16;
int b=Integer.parseInt(tmp[1]);
a=a*w+px;
b=b*w+py;
if(x%2==0){
g.setColor(Color.CYAN);
}else{
g.setColor(Color.BLACK);
}
g.fillArc(a-w/2, b-w/2, w, w,0,360);
int pxw=(px+w), pyw=(py+w);
int width=w*16,height=w*16;
int vline=(width+px); //垂直线的长度
int hline=(height+py); //水平线的长度
/**
*画棋盘
*/
public void paint(Graphics g){
ch++;
else
break;
}
System.out.println("后面执行了"+ch+"次");
for(int i=1;i<5;i++){
if(contain.contains(x+"-"+(y+i)))
cv++;
else
break;
}
for(int i=1;i<5;i++){
if(contain.contains(x+"-"+(y-i)))
}
else{
white.add(x+"-"+y);
this.victory(x, y,white);
System.out.println("白棋");
}
System.out.println(e.getX()+"-"+e.getY());
}
}
3.设计结果与分析
3.1 程序运行结果
图2 游戏刚开始
开始时白棋先走,然后黑棋,这样交替的下棋。看谁能赢。
if(contain.contains((x+i)+"-"+y))
ch++;
else
break;
}
(3)建立mouseClicked
建立对象getButton()
用if-else循环判断是否有悔棋
public void mouseClicked(MouseEvent e) {
if(e.getButton()==e.BUTTON1){
int x=e.getX();
int y=e.getY();
x=(x-x%w)+(x%w>w/2?w:0);
y=(y-y%w)+(y%w>w/2?w:0);
x=(x-px)/w;
y=(y-py)/w;
if(x>=0&&y>=0&&x<=16&&y<=16){
if(v.contains(x+"-"+y)){
2.2.2程序中主要方法说明
(1)建立一个主方法wuziqi并采用构造方法
用super去调用父类wuziqi
public wuziqi(){
super("五子棋");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭按钮
Container con=this.getContentPane();
this.addMouseListener(this);//添加监听
tool.add(btnstart);//添加按钮
tool.add(btnstop);
this.setSize(550,500);//设置窗体大小