(此文档为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)一、课程设计要求设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择落子的先后顺序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(int i=1;i<16;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 Checkbox[3];Button exist = new Button("退出");public void init(){ckbHB[0]=new Checkbox("执白",ckgHB,false);ckbHB[1]=new Checkbox("执黑",ckgHB,false);ckbHB[2]=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()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300) { return;}if (x1%20>10) {x1+=10;}if(y1%20>10) {y1+=10;}x1=x120*20;y1=y120*20;set_Qizi(x1,y1);m*=(-1);}d. 按钮的触发事件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) 判断游戏未开始{return;}if (intGame_Body[x20][y20]!=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_Body[x20][y20]=color_Qizi+1;}f. 判断胜负if (Game_win_1(x20,y20)) 判断输赢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.setText(Get_qizi_color(color_Qizi)+"赢了!");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 int[16][16]; 设置棋盘棋子状态int m=-1;Button b1=new Button("开始");Button b2=new Button("重置游戏");Label lblWin=new Label(" ");Checkbox ckbHB[]=new Checkbox[3];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(this);add(b2);b2.setBounds();b2.addActionListener(this);ckbHB[0]=new Checkbox("执白",ckgHB,false);ckbHB[0].setBounds();ckbHB[1]=new Checkbox("执黑",ckgHB,false);ckbHB[1].setBounds();ckbHB[2]=new Checkbox("观看",ckgHB, false);add(ckbHB[0]);add(ckbHB[1]);add(ckbHB[2]);ckbHB[0].addItemListener(this);ckbHB[1].addItemListener(this);add(lblWin);lblWin.setBounds(0);lblWin.setBackground(Color.red);lblWin.setText("胜利者!");没有显示?ckbHB[2].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();setSize();setVisible(true);}public void itemStateChanged(ItemEvent e) {if (ckbHB[0].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()<20 || e.getX()>300 || e.getY()<20 || e.getY()>300) { return;}if (x1%20>10) {x1+=10;}if(y1%20>10) {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_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)){ 判断输赢1lblWin.setText(Get_qizi_color(color_Qizi)+"赢了!");intGame_Start=0;}if (Game_win_2(x20,y20)){判断输赢2lblWin.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;}3.3 测试结果a. 进入游戏界面游戏开始的界面有三个选择项,用户可以选择相应的角色,选择完毕后点击开始进入游戏。