1、五子棋JAVA语言毕业课程设计报告(此文档为word格式,下载后您可任意编辑修改!)Java语言程序设计课程设计报告学 院: 信息科学技术学院 班 级: 软件技术2班 姓 名: 王更新 学 号: 指导教师: 郭韶升 课设时间: 至 二O一四 年 三月 二十六 日目 录一、设计要求.2二、设计步骤.2 2.1程序流程图.2 2.2程序的功能分配.3三、设计正文.6 3.1创建棋盘类.6 3.2判断输赢功能实现.9 3.3测试结果.9四、心得体会.12五、参考文献.12附录 (源代码).13一、课程设计要求设计一个1515围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择落子的先后顺序
2、2.重置棋盘3.刷新重新开始4.退出提示并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。最后判断某一方是否为五子连珠。实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌(执黑、执白)。(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);二、设计步骤2.1程序流程图2.2 程序的功能分配a. 棋盘的绘制public void draw_qipan(Graphics G) 画棋盘 15*15 G.setColor(Color.lightGray); G.fill3DRect(0,true); G.setColor(Color.black); for(in
3、t i=1;i16;i+) G.drawLine(20,20*i*i); G.drawLine(20*i,20,20*i,300); b. 添加按钮Button b1=new Button(开始); Button b2=new Button(重置游戏); Label lblWin=new Label( ); Checkbox ckbHB=new Checkbox3; Button exist = new Button(退出); public void init() ckbHB0=new Checkbox(执白,ckgHB,false); ckbHB1=new Checkbox(执黑,ckgHB
4、,false); ckbHB2=new Checkbox(观看,ckgHB, false); c. 鼠标棋子的触发事件public void mouseClicked(MouseEvent e) Graphics g=getGraphics(); int x1,y1; x1=e.getX(); y1=e.getY(); if (e.getX()300 | e.getY()300) return; if (x1%2010) x1+=10; if(y1%2010) y1+=10; x1=x120*20; y1=y120*20; set_Qizi(x1,y1); m*=(-1); d. 按钮的触发事
5、件 public void actionPerformed(ActionEvent e) Graphics g=getGraphics(); if (e.getSource()=b1) Game_start(); else Game_re(); if(e.getSource()=exist) Game_re(); lblWin.setText(Get_qizi_color(color_Qizi)+输了!); intGame_Start=0; e. 判断落子的位置及画出相应的黑白棋子public void set_Qizi(int x,int y) 落子 if (intGame_Start=0)
6、 判断游戏未开始 return; if (intGame_Bodyx20y20!=0) return; Graphics g=getGraphics(); if (color_Qizi=1)判断黑子还是白子 g.setColor(Color.black); color_Qizi=0; else g.setColor(Color.white); color_Qizi=1; g.fillOval(x-10,y); intGame_Bodyx20y20=color_Qizi+1;f. 判断胜负if (Game_win_1(x20,y20) 判断输赢1 lblWin.setText(Get_qizi_
7、color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_2(x20,y20) 判断输赢2 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_3(x20,y20) 判断输赢3 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_4(x20,y20) 判断输赢4 lblWin.setText(Get_qizi_color(color_Qiz
8、i)+赢了!); intGame_Start=0; 三、设计正文3.1创建棋盘类Public class WcyChess extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener int color_Qizi=0;旗子的颜色标识 0:白子 1:黑子 int intGame_Start=0;游戏开始标志 0未开始 1游戏中 int intGame_Body=new int1616; 设置棋盘棋子状态 int m=-1; Button b1=new Button(开始); But
9、ton b2=new Button(重置游戏); Label lblWin=new Label( ); Checkbox ckbHB=new Checkbox3; Button exist = new Button(退出); CheckboxGroup ckgHB=new CheckboxGroup(); NetchatClient chat=new NetchatClient(); public void init() setLayout(null); addMouseListener(this); add(b1); b1.setBounds(); b1.addActionListener(
10、this); add(b2); b2.setBounds(); b2.addActionListener(this); ckbHB0=new Checkbox(执白,ckgHB,false); ckbHB0.setBounds(); ckbHB1=new Checkbox(执黑,ckgHB,false); ckbHB1.setBounds(); ckbHB2=new Checkbox(观看,ckgHB, false); add(ckbHB0); add(ckbHB1); add(ckbHB2); ckbHB0.addItemListener(this); ckbHB1.addItemListe
11、ner(this); add(lblWin); lblWin.setBounds(0); lblWin.setBackground(Color.red); lblWin.setText(胜利者!);没有显示? ckbHB2.setBounds(440, 20,60, 30); add(exist); exist.setBounds(0); exist.addActionListener(this); add(chat);chat.setBounds(20, 500, 300, 300); chat.frame(); chat.setVisible(true); Game_start_csh()
12、; setSize(); setVisible(true); public void itemStateChanged(ItemEvent e) if (ckbHB0.getState() 选择黑子还是白子 color_Qizi=0; else color_Qizi=1; public void mousePressed(MouseEvent e) public void mouseClicked(MouseEvent e) Graphics g=getGraphics(); int x1,y1; x1=e.getX(); y1=e.getY(); if (e.getX()300 | e.ge
13、tY()300) return; if (x1%2010) x1+=10; if(y1%2010) y1+=10; x1=x120*20; y1=y120*20; set_Qizi(x1,y1); m*=(-1); public void actionPerformed(ActionEvent e) Graphics g=getGraphics(); if (e.getSource()=b1) Game_start(); else Game_re(); if(e.getSource()=exist) Game_re(); lblWin.setText(Get_qizi_color(color_
14、Qizi)+输了!); intGame_Start=0; public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e) public void paint(Graphics g) draw_qipan(g);3.2判断输赢功能实现if (Game_win_1(x20,y20)
15、 判断输赢1 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0;if (Game_win_2(x20,y20) 判断输赢2 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_3(x20,y20) 判断输赢3 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_4(x20,y20) 判断输赢4 lblWin.se
16、tText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0;3.3 测试结果a. 进入游戏界面游戏开始的界面有三个选择项,用户可以选择相应的角色,选择完毕后点击开始进入游戏。b. 选择角色,开始下棋首先达到五个棋子连在一块的赢了,并在红色区域显示谁赢了!c. 下完后,重新开始下完一盘后游戏停止,点击重新开始,界面回到初始界面,选择角色继续游戏.d.游戏中点退出,自动判输在下棋的过程当中谁中途退出,即点击退出,系统自动判断谁输四、课程设计心得体会通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老
17、师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。五、参考文献1. 吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社2. 柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社 3丁振凡 Java 语言实用教程 :北京邮电大学出版社附录 (源
18、代码)import .*;import java.io.*;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.awt.Color;Public class wuziqi extends Applet implements ActionListener,MouseListener,MouseMotionListener,ItemListener int color_Qizi=0;旗子的颜色标识 0:白子 1:黑子 int intGame_Star
19、t=0;游戏开始标志 0未开始 1游戏中 int intGame_Body=new int1616; 设置棋盘棋子状态 int m=-1; Button b1=new Button(开始); Button b2=new Button(重新开始); Label lblWin=new Label( ); Checkbox ckbHB=new Checkbox3; Button exist = new Button(退出); CheckboxGroup ckgHB=new CheckboxGroup(); public void init() setLayout(null); addMouseLis
20、tener(this); add(b1); b1.setBounds(); b1.addActionListener(this); add(b2); b2.setBounds(); b2.addActionListener(this); ckbHB0=new Checkbox(执白,ckgHB,false); ckbHB0.setBounds(); ckbHB1=new Checkbox(执黑,ckgHB,false); ckbHB1.setBounds(); ckbHB2=new Checkbox(观看,ckgHB, false); add(ckbHB0); add(ckbHB1); add
21、(ckbHB2); ckbHB0.addItemListener(this); ckbHB1.addItemListener(this); add(lblWin); lblWin.setBounds(0); lblWin.setBackground(Color.red); lblWin.setText(胜利者!);没有显示? ckbHB2.setBounds(440, 20,60, 30); add(exist); exist.setBounds(0); exist.addActionListener(this); Game_start_csh(); setSize(); setVisible
22、(true); public void itemStateChanged(ItemEvent e) if (ckbHB0.getState() 选择黑子还是白子 color_Qizi=0; else color_Qizi=1; public void mousePressed(MouseEvent e) public void mouseClicked(MouseEvent e) Graphics g=getGraphics(); int x1,y1; x1=e.getX(); y1=e.getY(); if (e.getX()300 | e.getY()300) return; if (x1
23、%2010) x1+=10; if(y1%2010) y1+=10; x1=x120*20; y1=y120*20; set_Qizi(x1,y1); m*=(-1) public void actionPerformed(ActionEvent e) Graphics g=getGraphics(); if (e.getSource()=b1) Game_start(); else Game_re(); if(e.getSource()=exist) Game_re(); color_Qizi=m; lblWin.setText(Get_qizi_color(color_Qizi)+输了!)
24、; intGame_Start=0; public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseDragged(MouseEvent e) public void mouseMoved(MouseEvent e) public void paint(Graphics g) draw_qipan(g); public void set_Qizi(int x,int y) 落子 if (in
25、tGame_Start=0) 判断游戏未开始 return; if (intGame_Bodyx20y20!=0) return; Graphics g=getGraphics(); if (color_Qizi=1)判断黑子还是白子 g.setColor(Color.black); color_Qizi=0; else g.setColor(Color.white); color_Qizi=1; g.fillOval(x-10,y); intGame_Bodyx20y20=color_Qizi+1; if (Game_win_1(x20,y20) 判断输赢1 lblWin.setText(G
26、et_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_2(x20,y20) 判断输赢2 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_3(x20,y20) 判断输赢3 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; if (Game_win_4(x20,y20) 判断输赢4 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); intGame_Start=0; public String Get_qizi_color(int x) if (x=0) return 黑子; else return 白子; public void draw_qipan(Graphics G) 画棋盘 15*15 G.setColor(Color.lightGray); G.fill3DRect(0,true); G.setColor(Color.black); for(int i=1;i16;i+) G.drawL
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1