《面向对象程序设计》课程设计报告实验时间:2010年10月26日实验班级:**********************实验报告总份(片)数: 1 份(片)实验指导老师:************ 设计小组湖南省吉首市吉首大学课程设计报告简单的游戏——五子棋小组成员(姓名、学号):**(组长)**** **** **一、实验分工二、开发环境(实验编译以及测试环境)硬件环境:CPU:Intel 奔腾双核E5200 主频2.5GHz内存:2G软件环境:操作系统:Windows 7编程环境JDK7.0开发工具:Eclipse SDK三、使用环境(用户运行环境)硬件环境:CPU主频在500MHZ以上,内存在128M以上软件环境:JAVA运行环境+ Windows XP或Windows 2000 以上操作系统目录第一章总体设计.............................................................................................................................. 11.1设计的目的........................................................................................................................... 11.2本系统的主要功能............................................................................................................... 11.3系统包含的类及类之间的关系。
....................................................................................... 11.4 Java源文件及其功能.......................................................................................................... 21.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 122.1主类Chess........................................................................................................................ 122.2类Autoplay...................................................................................................................... 132.3类Scan.............................................................................................................................. 14第三章功能测试及运行效果...................................................................................................... 153.1系统主界面....................................................................................................................... 153.2参考文献........................................................................................................................... 163.3工作总结........................................................................................................................... 16第一章总体设计1.1设计的目的《面向对象程序设计》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
本课程设计主要目的在于加深学生对面向对象基础理论和基本知识的理解,掌握面向对象程序设计的基本方法,进一步使学生综合运用所学知识和增强实际动手能力。
通过课程设计,学生在下述各方面的能力应该得到锻炼:1. 通过本次设计,实现对本学期内容的回顾与综合运用,包括类的建立,用类创建对象,方法的调用,图形组件的使用方法,图形界面的布局形式,事件处理机制,文件对话框的使用,文件操作的基本方法,数据读写的基本用法等。
2. 对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
3. 掌握自顶而下的设计方法,将大问题进行模块化、对象化,领会面向对象程序设计的方法。
4. 熟练掌握JAVA语言(C#)的基本语法,灵活运用各种预定义类、线程和事件处理。
1.2本系统的主要功能本系统可以实现电脑可以自动下棋,扫描整个棋盘记录连在一起的黑白棋子数,实现人与电脑有次序的下棋,判断人与电脑的胜负,为电脑下棋提供帮助1.3系统包含的类及类之间的关系。
本系统共包6个Java源文件。
类之间的关系如图1-1所示。
图1-1 类之间的关系图1.4 Java源文件及其功能表1-1 java源文件及其功能1.5 项目构建思路此程序旨在打造一个小型五子棋娱乐游戏,经过认真分析和探索。
终于,在大家的共同努力之下,完成了这个小型五子棋游戏。
游戏编辑思路,五子棋是一种互动性的益智游戏。
需要棋盘、棋子、棋手、裁判。
首先,我们绘制一个五子棋棋盘,关键代码如下://绘制棋盘函数public void paint(Graphics g){for (int i=40;i<=400;i=i+20){g.drawLine(40,i,400,i);} //绘制棋盘行for(int j=40;j<=400;j=j+20){g.drawLine(j,40,j,400);} //绘制棋盘列g.fillOval(97,97,6,6); //使用当前颜色填充外接指定矩形框的椭圆g.fillOval(337,97,6,6);g.fillOval(97,337,6,6);g.fillOval(337,337,6,6);g.fillOval(217,217,6,6);}其次,我们生成两种颜色不一样的棋子,关键代码如下:黑色棋子代码如下://ChessPoint_black 类继承 Canvas类class ChessPoint_black extends Canvas implements MouseListener{ ChessPad chesspad=null;ChessPoint_black(ChessPad p){setSize(20,20); //设置棋盘每一小格的长宽addMouseListener(this);chesspad=p;}public void paint(Graphics g){g.setColor(Color.black); //设置黑色棋子的颜色g.fillOval(0,0,18,18); //使用黑色填充椭圆棋子}白色棋子代码如下:class ChessPoint_white extends Canvas implements MouseListener{ChessPad chesspad=null;ChessPoint_white(ChessPad p){setSize(20,20);addMouseListener(this);chesspad=p;}public void paint(Graphics g){ //绘制棋子的颜色g.setColor(Color.white);//设置为白色g.fillOval(0,0,18,18);//填充白子}再次,为实现双方行棋,我们实现了电脑自动下棋的函数,一共分为8种情况,关键代码如下:class AutoPlay{ //AutoPlay类实现电脑可以自动下棋int x,y; //X统计玩家的连起来的棋子数//Y电脑玩家的连起来的棋子数void autoPlay(int chesspad[][],int a,int b){int randomNumber=(int)(Math.random()*8)+1; //获取一个随机数switch(randomNumber){ //分情况实现电脑自动下棋case(1): //通过a,b的值执行不同的运算,最后返回不同的//值。
达到执行不同的操作。
if(chesspad[a-1][b-1]==0){x=a-1;y=b-1;}if(chesspad[a-1][b+1]==0){x=a-1;y=b+1;}else if(chesspad[a-2][b-2]==0){x=a-2;y=b-2;}else {x=a-3;y=b-3;}break;case(2):if(chesspad[a-1][b]==0){x=a-1;y=b;}else if(chesspad[a-2][b]==0){x=a-2;y=b;}else {x=a-3;y=b;}break;case(3):if(chesspad[a-1][b+1]==0){x=a-1;y=b+1;}else if(chesspad[a-2][b+2]==0) {x=a-2;y=b+2;}else {x=a-3;y=b+3;}break;case(4):if(chesspad[a][b+1]==0){x=a;y=b+1;}else if(chesspad[a][b+2]==0){x=a;y=b+2;}else {x=a;y=b+3;}break;case(5):if(chesspad[a+1][b+1]==0){x=a+1;y=b+1;}else if(chesspad[a+2][b+2]==0) {x=a+2;y=b+2;}else {x=a+3;y=b+3;}break;case(6):if(chesspad[a+1][b]==0){x=a+1;y=b;}else if(chesspad[a+2][b]==0){x=a+2;y=b;}else {x=a+3;y=b;}break;case(7):if(chesspad[a+1][b-1]==0){x=a+1;y=b-1;}else if(chesspad[a+2][b-2]==0) {x=a+2;y=b-2;}else {x=a+3;y=b-3;}break;case(8):if(chesspad[a][b-1]==0){x=a;y=b-1;}else if(chesspad[a][b-2]==0) {x=a;y=b-2;}else{x=a;y=b+3;}break;}}}第四,为规范双方行棋的先后顺序,我们实现了一个判断函数,关键代码如下:class Sort{ //sort类实现人与电脑有次序的下棋public void sort(int shape[][][]){int temp;for(int i=0;i<19;i++)for(int j=0;j<19;j++){for(int h=1;h<=4;h++){for(int w=3;w>=h;w--){if(shape[i][j][w-1]<shape[i][j][w]){//如果前者小于后者,则交换temp=shape[i][j][w-1];shape[i][j][w-1]=shape[i][j][w];shape[i][j][w]=temp;}}}}}}第五,脑只是简单的执行代码,没有智能思考的能力。