您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 五子棋报告-java
XXXX大学XX学院课程设计报告课程名称:面向对象程序设计题目名称:五子棋游戏设计学生姓名:专业班级:指导教师:任晓强一、课程设计目的与任务(四号、宋体、加黑、顶格)(1)掌握Java编程、面向对象的基础知识。(2)较熟练地编写Java应用程序Application。(3)了解Java的常用标准类库、编程技巧、异常处理。(4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。二、课程设计内容1本设计题目的主要内容设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择落子的先后顺序2.重置棋盘3.刷新重新开始4.退出提示并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。最后判断某一方是否为五子连珠。实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌(执黑、执白)。(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);2设计思想与程序构架2.1程序流程图2.2程序的功能分配a.棋盘的绘制publicvoiddraw_qipan(GraphicsG)//画棋盘15*15{G.setColor(Color.lightGray);G.fill3DRect(10,10,300,300,true);G.setColor(Color.black);for(inti=1;i16;i++){G.drawLine(20,20*i,300,20*i);G.drawLine(20*i,20,20*i,300);}}b.添加按钮Buttonb1=newButton(开始);Buttonb2=newButton(重置游戏);LabellblWin=newLabel();CheckboxckbHB[]=newCheckbox[3];Buttonexist=newButton(退出);publicvoidinit(){ckbHB[0]=newCheckbox(执白,ckgHB,false);ckbHB[1]=newCheckbox(执黑,ckgHB,false);ckbHB[2]=newCheckbox(观看,ckgHB,false);}c.鼠标棋子的触发事件publicvoidmouseClicked(MouseEvente){Graphicsg=getGraphics();intx1,y1;x1=e.getX();y1=e.getY();if(e.getX()20||e.getX()300||e.getY()20||e.getY()300){return;}if(x1%2010){x1+=10;}if(y1%2010){y1+=10;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1);}d.按钮的触发事件publicvoidactionPerformed(ActionEvente){Graphicsg=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.判断落子的位置及画出相应的黑白棋子publicvoidset_Qizi(intx,inty)//落子{if(intGame_Start==0)//判断游戏未开始{return;}if(intGame_Body[x/20][y/20]!=0){return;}Graphicsg=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-10,20,20);intGame_Body[x/20][y/20]=color_Qizi+1;}f.判断胜负if(Game_win_1(x/20,y/20))//判断输赢1{lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}if(Game_win_2(x/20,y/20))//判断输赢2{lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}if(Game_win_3(x/20,y/20))//判断输赢3{lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}if(Game_win_4(x/20,y/20))//判断输赢4{lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}}3软件使用说明书按提示操作4序测试及分析a.进入游戏界面游戏开始的界面有三个选择项,用户可以选择相应的角色,选择完毕后点击开始进入游戏。b.选择角色,开始下棋首先达到五个棋子连在一块的赢了,并在红色区域显示谁赢了!c.下完后,重新开始下完一盘后游戏停止,点击重新开始,界面回到初始界面,选择角色继续游戏.d.游戏中点退出,自动判输在下棋的过程当中谁中途退出,即点击退出,系统自动判断谁输5设计总结通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。三、附录创建棋盘类PublicclassWcyChessextendsAppletimplementsActionListener,MouseListener,MouseMotionListener,ItemListener{intcolor_Qizi=0;//旗子的颜色标识0:白子1:黑子intintGame_Start=0;//游戏开始标志0未开始1游戏中intintGame_Body[][]=newint[16][16];//设置棋盘棋子状态intm=-1;Buttonb1=newButton(开始);Buttonb2=newButton(重置游戏);LabellblWin=newLabel();CheckboxckbHB[]=newCheckbox[3];Buttonexist=newButton(退出);CheckboxGroupckgHB=newCheckboxGroup();NetchatClientchat=newNetchatClient();publicvoidinit(){setLayout(null);addMouseListener(this);add(b1);b1.setBounds(330,50,80,30);b1.addActionListener(this);add(b2);b2.setBounds(330,90,80,30);b2.addActionListener(this);ckbHB[0]=newCheckbox(执白,ckgHB,false);ckbHB[0].setBounds(320,20,60,30);ckbHB[1]=newCheckbox(执黑,ckgHB,false);ckbHB[1].setBounds(380,20,60,30);ckbHB[2]=newCheckbox(观看,ckgHB,false);add(ckbHB[0]);add(ckbHB[1]);add(ckbHB[2]);ckbHB[0].addItemListener(this);ckbHB[1].addItemListener(this);add(lblWin);lblWin.setBounds(330,180,80,30);lblWin.setBackground(Color.red);lblWin.setText(胜利者!);//没有显示?ckbHB[2].setBounds(440,20,60,30);add(exist);exist.setBounds(330,130,80,30);exist.addActionListener(this);//add(chat);chat.setBounds(20,500,300,300);chat.frame();chat.setVisible(true);Game_start_csh();setSize(500,600);setVisible(true);}publicvoiditemStateChanged(ItemEvente){if(ckbHB[0].getState())//选择黑子还是白子{color_Qizi=0;}else{color_Qizi=1;}}publicvoidmousePressed(MouseEvente){}publicvoidmouseClicked(MouseEvente){Graphicsg=getGraphics();intx1,y1;x1=e.getX();y1=e.getY();if(e.getX()20||e.getX()300||e.getY()20||e.getY()300){return;}if(x1%2010){x1+=10;}if(y1%2010){y1+=10;}x1=x1/20*20;y1=y1/20*20;set_Qizi(x1,y1);m*=(-1);}publicvoidactionPerformed(ActionEvente){Graphicsg=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;}}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseReleased(MouseEvente){}publicvoidmouseDragged(MouseEvente){}publicvoidmouseMoved(MouseEvente){}publicvoidpaint(Graphicsg){draw_qipan(g);}判断输赢功能实现if(Game_win_1(x/20,y/20)){//判断输赢1lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}if(Game_win_2(x/20,y/20)){//判断输赢2lblWin.setText(Get_qizi_color(color_Qizi)+赢了!);intGame_Start=0;}if(Game_win_3(
本文标题:五子棋报告-java
链接地址:https://www.777doc.com/doc-6203976 .html