




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文)任务书 软件 学院 软件+会计学 专 业 2007-2 班一、课程设计(论文)题目 多用户五子棋 二、课程设计(论文)工作自 2009 年 6 月 15 日起至 2009 年 6月 19 日止。 三、课程设计(论文) 地点: 创新大楼软件学院机房 四、课程设计(论文)内容要求:1本课程设计的目的 (1)通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发应用软件、开发系统软件等各项工作。 (2)通过实习掌握语言的语法结构,理解类和对象的概念,准确的使用各种数据类型,对面向对象中的继承和多态的概念要理解、会使用,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。2课程设计的任务及要求1)基本要求:实现一个简单的多用户五子棋的游戏程序,包括如下两个界面(1)选择对弈桌及角色(执黑、执白、观看)。(2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);发言及显示区;用户列表区;棋盘绘制区。2)创新要求: 在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。3)课程设计论文编写要求(1)要按照书稿的规格打印与写课程设计论文 (2)论文包括目录、设计思路、具体实现、运行调试与分析讨论、设计体会与小结、参考文献、附录(源代码)等 (3)课程设计论文装订按学校的统一要求完成4)答辩与评分标准: (1)完成基本算法设计:20分; (2)完成设计过程 :40分; (3)完成调试:20分;(4)回答问题:20分。5)参考文献:1丁振凡Java语言实用教程.北京邮电大学出版社,2005年8月第一版第2次印刷2 叶核亚 陈道蕾.java2程序设计实用教程,电子工业出版社 2007年1月第二版3陈家兴 陈凤 朱国鸿.Java图形用户界面设计与案例,冶金工业出版社2004年1月第一版第1次印刷4 (美)Bruce Eckeljava编程思想,机械工业出版社,2007年6月第4版6)课程设计进度安排内容 天数地点构思及收集资料 1图书馆编码与调试 2.5实验室撰写论文 1.5图书馆、实验室学生签名: 2009年6 月 15 日课程设计(论文)评审意见(1)完成基本算法(20分):优()、良()、中()、一般()、差(); (2)完成调试(20分):优()、良()、中()、一般()、差(); (3)创新设计(20分):优()、良()、中()、一般()、差();(4)设计分析(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人: 职称: 2009年 6月 21 日 目录一 课程设计题目及设计目标4二 设计思想5三 类及对象设计6四 具体实现(程序源代码)7五 运行调试与分析讨论18六 设计体会与小结24七 参考文献25一 课程设计题目及设计目标设计一个1515围棋棋盘,由两玩家交替进行对战,并可以实现以下功能:1.选择落子的先后顺序 2.重置棋盘3.刷新重新开始4.退出提示并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。最后判断某一方是否为五子连珠。二 设计思想做一个Applet程序,并在开始设定合适的窗口,布局简单,美观,实用。在左侧先画出一个1515的棋盘,在右侧设置特定大小位置的按钮,其有不同的作用可以实现重置游戏,选择黑白,选择先后开始游戏,及退出。最后通过横扫描、竖扫描、左斜扫描与右斜扫描public boolean Game_win_1(int x,int y)、public boolean Game_win_2(int x,int y)、public boolean Game_win_4(int x,int y)、public boolean Game_win_3(int x,int y)四次扫描及根据选择退出者判断玩家输赢,并实现特定区域显示“XX胜利!”。并且,有防错提示框,无意中点错退出按钮后,实现提示。游戏程序为人与人对战程序,不支持人机对战。三 类及对象设计public void init()/程序初始化public void actionPerformed(ActionEvent e)/按钮实现作用public void qipan(Graphics G) /画棋盘 15*15 public void Game_btn_enable(boolean e/设置组件初始状态public void start() /游戏开始初始化public void Game_start() /游戏开始public void mouseClicked(MouseEvent e)/鼠标点击public void set_Qizi(int x,int y) /落子public void itemStateChanged(ItemEvent e)/判断落子顺序public String Get_qizi_color(int x)/返回棋子颜色public void Game_re() /游戏重新开始public void Game_stop()/退出游戏class MyFrame extends Frame implements ActionListener/弹出对话框并判断退出者为负public boolean Game_win_1(int x,int y) /判断输赢 横public boolean Game_win_2(int x,int y) /判断输赢 竖public boolean Game_win_3(int x,int y) /判断输赢 左斜public boolean Game_win_4(int x,int y) /判断输赢 右斜四 具体实现(程序源代码)package wuziqi1;import java.applet.*;import java.applet.Applet;import java.awt.*;import java.awt.Color;import java.awt.event.*;public class wuziqi extends Applet implements ActionListener,MouseListener, MouseMotionListener,ItemListener int color_Qizi=0;/旗子的颜色标识 0:白子 1:黑子 int gamestart=0;/游戏开始标志 0未开始 1游戏中 int gamebody=new int1616; /设置棋盘棋子状态 0 无子 1 白子 2 黑子 Button b1=new Button(游戏开始); Button b2=new Button(重置游戏); Button b3=new Button(退出游戏); Label lblWin=new Label();/状态标签 Checkbox ckbHB=new Checkbox2;/起始复选框 CheckboxGroup ckgHB=new CheckboxGroup();/复选框组 public void init() resize(420,360); setLayout(null); addMouseListener(this); add(b1); b1.setBounds(330,100,70,30); b1.addActionListener(this); add(b2); b2.setBounds(330,140,70,30); b2.addActionListener(this); add(b3); b3.setBounds(330,180,70,30); b3.addActionListener(this); ckbHB0=new Checkbox(白子先,ckgHB,false); ckbHB0.setBounds(330,30,70,30); ckbHB1=new Checkbox(黑子先,ckgHB,false); ckbHB1.setBounds(330,60,70,30); add(ckbHB0); add(ckbHB1); ckbHB0.addItemListener(this); ckbHB1.addItemListener(this); add(lblWin); lblWin.setBounds(330,280,70,30); setBackground(Color.gray); setBounds(100,100,320,280); setVisible(true); start(); public void itemStateChanged(ItemEvent e) if (ckbHB0.getState() /判断黑子先还是白子先 color_Qizi=0; else color_Qizi=1; public void actionPerformed(ActionEvent e) if (e.getSource()=b1)/开始游戏 Game_start(); else if(e.getSource()=b3)/退出游戏 Game_stop(); else/e.getSource()=b2/重新开始 Game_re(); public void mouseClicked(MouseEvent e) int x1,y1; x1=e.getX(); y1=e.getY(); if (e.getX()300 | e.getY()300) return; if (x1%2010) x1+=20; if(y1%2010) y1+=20; x1=x1/20*20; y1=y1/20*20; set_Qizi(x1,y1); public void mousePressed(MouseEvent e) 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) qipan(g); public void set_Qizi(int x,int y) /落子 if (gamestart=0) /判断游戏是否开始 return; if (gamebodyx/20y/20!=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-10,20,20); gamebodyx/20y/20=color_Qizi+1; if (Game_win_1(x/20,y/20) /判断输赢1 横向 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); gamestart=0; if (Game_win_2(x/20,y/20) /判断输赢2 竖向 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); gamestart=0; if (Game_win_3(x/20,y/20) /判断输赢3 左斜 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); gamestart=0; if (Game_win_4(x/20,y/20) /判断输赢4 右斜 lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); gamestart=0; public String Get_qizi_color(int x)/返回棋子颜色 if (x=0) return 黑子; else return 白子; public void qipan(Graphics G) /画棋盘 15*15 G.setColor(Color.gray); G.fill3DRect(10,10,300,300,true); G.setColor(Color.black); for(int i=1;i16;i+) G.drawLine(20,20*i,300,20*i); G.drawLine(20*i,20,20*i,300); public void Game_btn_enable(boolean e) /设置组件初始状态 b1.setEnabled(e); b2.setEnabled(e); b3.setEnabled(e); ckbHB0.setEnabled(e); ckbHB1.setEnabled(e); public void start() /游戏开始初始化 gamestart=0; Game_btn_enable(true); b2.setEnabled(false); b3.setEnabled(false); ckbHB0.setState(true); for (int i=0;i16 ;i+ ) for (int j=0;j16 ;j+ ) gamebodyij=0; lblWin.setText(胜负状态); public void Game_start() /游戏开始 gamestart=1; Game_btn_enable(false); b2.setEnabled(true); b3.setEnabled(true); public void Game_re() /游戏重新开始 repaint(); start(); repaint(); start(); public void Game_stop()/退出游戏 new MyFrame(); class MyFrame extends Frame implements ActionListener Button b4,b5,b6; MyFrame() super(MY WINDOWS); b4=new Button(退出将被判为输是否继续游戏?); setLayout(new FlowLayout(); add(b4); b4.addActionListener(this); setLayout(new FlowLayout(); b5=new Button(是); add(b5); b5.addActionListener(this); setLayout(new FlowLayout(); b6=new Button(否); add(b6); b6.addActionListener(this); addWindowListener(new closeWin(); setSize(220,100); setVisible(true); public void actionPerformed(ActionEvent e) if(e.getActionCommand()=关闭) dispose(); if (e.getSource()=b5) dispose(); else if(e.getSource()=b6) dispose(); lblWin.setText(Get_qizi_color(color_Qizi)+赢了!); else return; class closeWin extends WindowAdapter public void windowClosing(WindowEvent e) Window w=e.getWindow(); w.dispose(); public boolean Game_win_1(int x,int y) /判断输赢 横 int x1,y1,t=1; x1=x; y1=y; for (int i=1;i15) break; if (gamebodyx1+iy1=gamebodyxy) t+=1; else break; for (int i=1;i5 ;i+ ) if (x14) return true; else return false; public boolean Game_win_2(int x,int y) /判断输赢 竖 int x1,y1,t=1; x1=x; y1=y; for (int i=1;i15) break; if (gamebodyx1y1+i=gamebodyxy) t+=1; else break; for (int i=1;i5 ;i+ ) if (x14) return true; else return false; public boolean Game_win_3(int x,int y) /判断输赢 左斜 int x1,y1,t=1; x1=x; y1=y; for (int i=1;i15) break; if (gamebodyx1+iy1-i=gamebodyxy) t+=1; else break; for (int i=1;i5 ;i+ ) if (x14) return true; else return false; public boolean Game_win_4(int x,int y) /判断输赢 右斜 int x1,y1,t=1; x1=x; y1=y; for (int i=1;i15) break; if (gamebodyx1+iy1+i=gamebodyxy) t+=1; else break; for (int i=1;i5 ;i+ ) if (x14) return true; else return false; 五 运行调试与分析讨论1.开始画面。2.选择白子先下。3.选择黑子先下。4.选择重置游戏。5.选择退出游戏。5.1选择“否”后,判定胜负。5.2选择
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 照相器材维修工抗压考核试卷及答案
- 气动元件制造工成本控制考核试卷及答案
- 船闸及升船机运行员培训考核试卷及答案
- 灌区供水工技能比武考核试卷及答案
- 缝制机械装配调试工标准化作业考核试卷及答案
- 建筑工程项目合同管理要点解析
- 施工机械质量追溯系统维护策略分析报告
- 地毯剪花工适应性考核试卷及答案
- 铸件冷却过程仿真分析报告
- 聚丙烯酰胺装置操作工基础知识考核试卷及答案
- 2025年民航维修考试题库及答案
- 医院拆除工程方案范本(3篇)
- 11.3.2 两数和(差)的平方 课件 华东师大版数学八年级上册
- 第6课 从小爱科学 第1课时(课件)2025-2026学年道德与法治三年级上册统编版
- 肺结节CT判读课件
- 2025年山东省版劳动合同书(全日制用工)
- 感染性关节炎护理查房
- 附睾结核护理查房
- 2025年oracle mysql面试题及答案
- 肩袖损伤查房
- GB/T 32066-2024煤基费托合成液体石蜡
评论
0/150
提交评论