JAVA火柴小游戏课程设计报告材料

合集下载

捡火柴设计实验报告

捡火柴设计实验报告

课程设计课程名称:Java语言程序设计实验项目:捡火柴游戏实验时间:2014.07.01实验班级:12电子商务(本科)小组成员:指导教师:计算机科学学院2014年7月1日目录“捡火柴”游戏设计 (1)1.课程设计内容概述 (1)1.1目的 (1)1.2任务 (1)2.程序设计基本思想 (1)2.1问题需求分析 (1)2.2总体设计 (2)2.3编程环境及工具说明 (2)3.系统流程图 (2)4.系统各部分的UML类图 (3)5.容器层次结构树 (4)6.运行结果及分析截图 (5)6.1程序界面截图 (5)6.2开始玩游戏截图 (6)6.3游戏程序结束的截图 (6)7.总结 (7)8.合作课程设计的成员分工情况 (8)参考文献 (10)本次课程设计选题:捡火柴游戏(3人)小游戏:捡火柴要求:程序随机产生100根火柴,游戏方为2-4人,由人与1-3个计算机方轮流拿,每方每次拿的数量不超过3根,拿到最后一根为胜。

使用图形界面,计算机方可以设置1到3个,可以存档。

提示:多线程,每方拥有一个线程,共享总火柴数,随机拿根数,注意同步。

为了保持趣味性,请自行考虑剩余火柴数与对手每次拿的火柴数是否公布。

1.课程设计内容概述1.1目的游戏设计目的:设计一个捡火柴游戏的类来玩游戏,实现符合题目要求的游戏规则,并实现程序可视化。

实验目的:(1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;(2)课程设计为我们提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼我们的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力;(3)培养我们在项目开发中团队合作精神、独立思考意识及软件开发能力。

1.2任务设计任务要完成设计,编码,测试等过程,给出程序设计的基本思想,系统流程图,系统各部分的UML类图,容器层次结构树,运行结果及相应分析。

2.程序设计的基本思想2.1问题需求分析捡火柴是一个简单的游戏。

java课程设计小游戏拿火柴

java课程设计小游戏拿火柴

java课程设计小游戏拿火柴一、教学目标本节课的教学目标是使学生掌握Java语言的基本语法和编程技巧,通过编写小游戏“拿火柴”来提高学生的编程实践能力。

具体目标如下:1.掌握Java语言的基本语法和结构。

2.理解面向对象编程的基本概念。

3.学习使用Java编写简单的图形界面程序。

4.能够使用Java编写基本的控制结构和函数。

5.学会使用Java编写简单的图形界面程序。

6.能够运用面向对象编程思想来解决问题。

情感态度价值观目标:1.培养学生的编程兴趣,提高学生主动学习编程的积极性。

2.培养学生团队协作、沟通交流的能力。

3.培养学生解决问题、创新思维的能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java语言基本语法和结构:数据类型、变量、常量、运算符、控制结构等。

2.面向对象编程:类、对象、属性、方法、继承、多态等。

3.Java图形界面编程:Swing组件、事件处理、布局管理器等。

4.小游戏“拿火柴”的设计和实现:游戏规则、界面设计、逻辑实现等。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下几种教学方法:1.讲授法:讲解Java语言的基本语法和结构,以及面向对象编程的基本概念。

2.案例分析法:分析实际编程案例,让学生理解Java编程的应用场景。

3.实验法:让学生动手编写小游戏“拿火柴”,提高学生的编程实践能力。

4.小组讨论法:分组进行讨论,培养学生的团队协作和沟通交流能力。

四、教学资源本节课的教学资源包括以下几个方面:1.教材:《Java编程入门》或《Java核心技术》等。

2.参考书:《Java编程思想》、《Java并发编程实战》等。

3.多媒体资料:教学PPT、视频教程、在线编程实践平台等。

4.实验设备:计算机、网络环境、编程软件(如Eclipse、IntelliJ IDEA等)。

五、教学评估本节课的教学评估将采用多元化评价方式,以全面、客观、公正地评价学生的学习成果。

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)1

JAVA课程设计报告(小游戏)第一章总体设计1.1本系统的主要功能记忆测试游戏1.2系统包含的类及类之间的关系本系统共包括7个java源文件。

如图1-1所示。

图1-1 类之间的关系2.2 java源文件及其功能1.MemoryGame.java该文件负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始运行;2.MemoryTestArea.java该文件所包含的MemoryTestArea类是主类MemoryGame窗口的一个JPanel容器,所创建的对象成为测试区,这个测试区被添加到MemoryGame窗口的中心;3.Block.java该文件所包含的Block类是JButton的子类,负责为MemoryTestArea 类中的ArrayList数组表提供Block对象;4.Record.java该文件所包含的Record类是javax.swing包中JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中;5.ShowRecordDialog.java该文件所包含的ShowRecordDialog类是javax.swing包中JDialog 对话框的子类,当用户单击查看排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩;6.People.java该文件所包含的People对象封装用户的名字和成绩,以便ShowRecordDialog 对象可以按成绩的高低排列用户。

第二章详细设计2.1主类MemoryGame.java(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称菜单条JMenuBar bar 字符串数组Sring imagename 测试区对象MemoryArea memoryarea 菜单JMenu menuGrade(2)方法见表2-2表2-2 主要方法成员变量描述功能备注MemoryGame() 完成窗口初始化构造函数actionPerformed(实现接口中的方法ActionEvent)Main(String[]) 软件运行的入口(3)源代码见文件×××.java2.2类×××××(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称测试区的行列数int Row,col用户的用时int usedtime 提供存储成绩的界面Record record(2)方法见表2-4表2-4 主要方法方法名功能备注MemoryTestArea() 创建memoryGame对象构造函数run() 显示图标1200毫秒2.3类Block(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称openStateIcon是方块上的图标ImageIcon openStateIcon (2)方法见表2-4表2-4 主要方法方法名功能备注setOpenStateIcon( ImageIcon)Block 对象调用setOpenStateIcon(ImageIcon)方法可也设置它上面的图标getOpenStateIcon()Block 对象调用getOpenStateIcon()方法可以获得它上面的图标2.4类ShowRecordDialog(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称gradeFile是对话框要读取的文件,该文件存储读取的成绩File gradeFile Clear是注册ActionEvent JButton clear事件的按钮showArea文本区显示对话从gradeFile文本中读出的成绩JTextArea showArea(2)方法见表2-4表2-4 主要方法方法名功能备注ShowRecorDialog()ShowRecorDialog()是构造方法,负责创建shoeDialog对象setGradeFile(File)ShowRecorDialog类创建的ShowRecorDialog对话框是主类MemoryGame窗口中的一个成员2.5 People类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的名字String name用户的用时int time(2)方法见表2-4表2-4 主要方法方法名功能备注getTime()返回timegetName()返回namecompareTo(Object)确定People对象的大小关系2.6 Record类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的用时int time 用来输入名字的文本框JTextField yourName保存成绩的按钮对象JButton enter 放弃保存成绩的按钮对象JButton cancel 级别文件File gradeFile(2)方法见表2-4表2-4 主要方法方法名功能备注Record()负责创建record对象的构造方法setGradeFile (File)Record类创建的Record对话框是测试区MemoryTextArea 中的一个成员。

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1

小游戏Java课程设计报告书-V1本篇文章主要介绍小游戏Java课程设计报告书的相关内容。

1. 引言本次小游戏Java课程设计的目的是提高学生对Java语言的掌握能力和实际开发能力。

该小游戏为一款基于Java语言的桌面游戏。

2. 开发环境本次小游戏的开发环境采用Eclipse编译器,并使用Java语言作为主要开发语言。

游戏使用了Swing界面库和各种Java类库来实现不同的功能。

3. 游戏功能分析游戏的主要功能分为三个部分:游戏界面、游戏规则和游戏控制。

3.1 游戏界面游戏的界面主要由几个部分组成:标题栏、游戏画面和控制按钮。

其中,游戏画面包括了地图、玩家、敌人以及游戏元素等。

控制按钮用来控制玩家移动或者其他相关操作。

3.2 游戏规则游戏的规则很简单,玩家需要通过操作控制按钮,使得玩家在地图上移动,同时避免敌人的攻击,并到达游戏终点。

3.3 游戏控制游戏的控制主要包括以下几个方面:1. 玩家移动控制;2. 敌人移动控制;3. 游戏胜负判断;4. 游戏关卡和等级控制。

4. 实现方法和关键技术本次小游戏的实现主要涉及以下几个技术和方法:1. Java GUI编程;2. Java面向对象编程;3. Java事件处理;4. 游戏逻辑设计。

5. 结论通过对小游戏Java课程设计的开发实现,学生对Java编程技术进一步深入学习和掌握,同时提高了学生的合作开发与沟通协作能力。

本次小游戏的开发实践活动是一次有效的教学方法,为以后的Java学习和实践工作奠定了坚实的基础。

java小游戏设计.docx

java小游戏设计.docx

文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.华北科技学院计算机学院综合性实验实验报告课程名称JAVA程序设计实验学期2014至2015学年第1学期学生所在院部计算机学院年级专业班级学生姓名学号任课教师实验成绩计算机学院制《 Java 程序设计》课程综合性实验报告开课实验室:基础四2016年 11 月 28日实验题目基于 java 的拼图游戏一、实验目的程序使用Eclipse 集成开发环境完成,熟悉并掌握在Eclipse 开发环境下编写Java 程序。

二、设备与环境硬件:多媒体计算机软件: Windows 系列操作系统、JDK 开发包、 Eclipse 开发环境三、实验内容及要求1.实验要求使用 Java swing 编程实现拼图游戏。

游戏功能是将一幅图片分割成5*5 的规则小图片,游戏开始时将25 个小图片随机摆放,玩家能够参考原图拼接出正确的图片。

游戏规则:在 25 个小图片中有一个为空白图片,玩家可以单击和空白小图片相邻的任一个小图片(上、下、左、右均可),即可将单击的小图片与空白小图片交换位置。

通过有限次的移动,即可将随机分布的小图片恢复成原图的样式。

2.实验内容( 1)java 源代码及其功能及主员函序号类名主要功能功1GreedSnake该类为程序入口,含有main 方法。

( 2)2SnakeControl实现控制运行等总体要求,实现方向键控制蛇的方向,空格键控制游戏暂停或继续,还有分数等。

代码该类实现蛇的结构和具体运动,如判断食物是否和3SnakeModel现如怎样被吃掉及判断后的动作。

① 程4Node该类实现组成蛇身的单位- 食物。

口主5SnakeView该类实现画板功能,用黑色画蛇身,红色画食物。

法://第一部分public class GreedSnake {//建立主类GreeSnakepublic static void main(String[] args) {SnakeModel model =new SnakeModel(20,30);//初始化蛇出现的位置SnakeControl control =new SnakeControl(model);SnakeView view =new SnakeView(model,control);//添加一个观察者,让 view 成为 model 的观察者model.addObserver(view);(new Thread(model)).start();}各类要成数的能:具体及实下:序入方}②实现对蛇身的控制要求://第二部分//游戏的 Model 类,负责所有游戏相关数据及运行class SnakeControl implements KeyListener{//SnakeControl实现接口KeyListener,键盘监听SnakeModel model;public SnakeControl(SnakeModel model){this. model= model;}public void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();if(model . running){//运行状态下,处理的按键switch(keyCode) {case KeyEvent.VK_UP :model.changeDirection(SnakeModel.UP);break;case KeyEvent.VK_DOWN:model.changeDirection(SnakeModel.DOWN);break;case KeyEvent.VK_LEFT :model.changeDirection(SnakeModel.LEFT );break;case KeyEvent.VK_RIGHT :model.changeDirection(SnakeModel.RIGHT );break;case KeyEvent.VK_ADD :case KeyEvent.model.speedUp();break;case KeyEvent.VK_SUBTRACT :case KeyEvent.model.speedDown();break;case KeyEvent.VK_SPACE :case KeyEvent.VK_P :model.changePauseState();// 暂停进入睡眠状态break;default:}}//任何情况下处理的按键,按键导致重新启动游戏if(keyCode == KeyEvent.VK_R ||keyCode == KeyEvent.VK_S ||keyCode == KeyEvent.VK_ENTER ) {model.reset();}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}}③实现蛇的结构和具体运动://第三部分@SuppressWarnings( “ unchecked ” )class SnakeModel extends Observable implements Runnable {//SnakeModel继承Observable类并且实现接口Runnable文档来源为 :从网络收集整理 .word版本可编辑 .欢迎下载支持 .ainfra[][]matrix;//指示位置上有没蛇体或食物LinkedList<Node>nodeArray=new LinkedList<Node>();// 蛇体Node food;int maxX ;int maxY ;int direction= 2;//蛇运行的方向ainfra running=false;//运行状态int timeInterval= 200;//时间间隔,毫秒doublespeedChangeRate= 0.75;// 每次得速度变化率ainfra paused=false;//暂停标志int score= 0;//得分int countMove= 0;//吃到食物前移动的次数//UP and DOWN should be even//RIGHT and LEFT should be oddpublic static final int UP=2;public static final int DOWN= 4;public static final int LEFT = 1;public static final int RIGHT = 3;public SnakeModel(int maxX,int maxY) {this. maxX = maxX;this. maxY = maxY;reset();}public void reset(){direction= SnakeModel.UP;// 蛇运行的方向timeInterval= 500;//时间间隔,毫秒paused=false;//暂停标志score= 0;//得分countMove= 0;//吃到食物前移动的次数// initial ainfr,全部清 0matrix=new ainfra[ maxX ][];for(int I=0;I<maxX ; ++i) {matrix[i] =new ainfra[ maxY ];Arrays.fill( matrix[i],false );}//initial the snake//初始化蛇体,如果横向位置超过20 个,长度为 10 ,否则为横向位置的一半int initArrayLength =maxX > 20 ? 10 :maxX / 2;nodeArray.clear();for( int I = 0; I < initArrayLength; ++i) {int x =maxX / 2 + I;//maxX被初始化为 20int y =maxY / 2;//maxY 被初始化为 30//nodeArray[x,y]: [10,15]-[11,15]-[12, 15]~~[20,15]// 默认的运行方向向上,所以游戏一开始nodeArray 就变为://[10, 14]-[10, 15]-[11, 15]-[12, 15]~~[19, 15]nodeArray.addLast(new Node(x, y));matrix [x][y] =true;}//创建食物food = createFood();matrix [ food . x ][ food . y ] =true ;}public void changeDirection(int newDirection) {//改变的方向不能与原来方向同向或反向if ( direction% 2 != newDirection % 2) {direction= newDirection;}}public ainfra moveOn() {Node n =nodeArray.getFirst();文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.int x = n.x ;int y = n.y ;//根据方向增减坐标值switch( direction) {case UP:y--;break ;case DOWN:y++;break ;case LEFT :x--;break ;case RIGHT :x++;break ;}//如果新坐标落在有效范围内,则进行处理if ((0 <= x && x <maxX ) && (0 <= y && y <maxY )) {if ( matrix [x][y]) {//如果新坐标的点上有东西(蛇体或者食物)if (x ==food . x && y ==food . y ) {//吃到食物,成功nodeArray.addFirst(food );//从蛇头赠长//分数规则,与移动改变方向的次数和速度两个元素有关int scoreGet = (10000–200 *countMove ) /timeInterval;score += scoreGet > 0 ? scoreGet : 10;countMove= 0;food = createFood();//创建新的食物matrix [ food . x ][ food . y ] =true ;//设置食物所在位置return true ;}else//吃到蛇体自身,失败return false ;}else {//如果新坐标的点上没有东西(蛇体),移动蛇体nodeArray.addFirst(new Node(x, y));matrix [x][y] =true ;n =nodeArray.removeLast();matrix [n. x ][n. y ] =false ;countMove ++;return true ;}}return false;//触到边线,失败}public void run() {//运行方法running=true;while(running) {try{Thread.sleep( timeInterval);}catch(Exception e) {break;}if(!paused) {if(moveOn()) {setChanged();// Model通知 View数据已经更新notifyObservers();}else{JoptionPane.showMessageDialog( null,“你输了”,“ Game Over” ,文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .RMATION_MESSAGE );break;}}}running = false;}private Node createFood() {int x = 0;int y = 0;//随机获取一个有效区域内的与蛇体和食物不重叠的位置do {Random r =new Random();x = r.nextInt(maxX );y = r.nextInt(maxY );}while ( matrix[x][y]);return new Node(x, y);}public void ainfra() {timeInterval*= speedChangeRate;}public void speedDown() {timeInterval/=speedChangeRate;}public void changePauseState() {paused = ! paused ;}public String toString() {String result =“”;for ( int I = 0; I <nodeArray.size(); ++i) {Node n =nodeArray.get(i);result +=“ [“+ n.x +“ ,”+ n.y +“ ]”;}return result;}}④实现组成蛇身的单位- 食物://第四部分class Node {//Node子类int x ;int y ;Node( int x,int y) {this . x = x;this . y = y;}}⑤实现画板功能,黑色为蛇身,红色为食物:// 第五部分class SnakeView implements Observer {//SnakeView实现接口 ObserverSnakeControl control=null ;SnakeModel model=null;Jframe ainframe; //窗口Canvas paintCanvas; //图像背景Jlabel labelScore; //分数public static final int canvasWidth= 300;//窗口宽度public static final int canvasHeight= 300;//窗口高度}文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持.( 3)游戏运行结果如图:① 初始游戏界面及蛇出现的位置,最后三行英文字母为帮助菜单:②第一次吃到食物加10 分,增长 1 个食物的长度:③第二次吃到食物加14 分,蛇身增加 1 个食物的长度,两次加分说明游戏分数不仅和食物有关还和所走路径有关:④ 游戏失败两种情况:咬到蛇尾或者自身:四、实验结果及分析此处写自己通过学习本课程所得到的收获、感想以及对课程教学的看法等内容,要写自己的真实想法,不要写套话。

java魔板游戏课程设计报告400字

java魔板游戏课程设计报告400字

java魔板游戏课程设计报告400字魔板游戏Java课程设计魔板游戏Java课程设计设计(论文)题目:所在院:专业班级:学生姓名学号:指导教师:魔板游戏信息工程学院年月日课程设计(论文)任务书设计题目:魔板游戏专业班级:学号:姓名:主要内容设计一个java语言的魔板游戏,主要包含:魔板游戏主窗口模块、游戏魔板模块、魔板中“方块”定位模块。

此游戏运用的是非常直观易操作的图形用户界面,通过对界面上的菜单、子菜单、以及单选按钮进行操作即可使本游戏顺利进行。

编辑平台选用Eclipse 。

其中用到了图形用户界面、异常处理、类的构成以及继承等java知识点。

基本要求:能够使所设计的游戏正常的运行,要保证无差错现象。

而且使用户更加方便去操作,要有一定的功能来体现java 语言的精简性、稳固性、兼容性强等特性。

完成期限:2013年1月6日指导教师签名:评审小组负责人签名:目录1 概述........................................................... .... 1 1.1 课程设计目的.................................................. 1 1.2 课程设计内容.................................................. 1 2 系统需求分析...........................................................1 2.1 系统目标 (1)2.2 主体功能 (2)2.3 开发环境...................................................... 2 3 系统概要设计...........................................................2 3.1 系统的功能模块划分............................................ 2 3.2 系统流程图.................................................... 5 4系统详细设计............................................................6 5 测试........................................................... ........ 7 5.1 测试方案 (7)5.2 测试结果...................................................... 7 6 小结........................................................... ........ 8 附录........................................................... ... 9 附录1 模块清单.. (9)附录1.1 PUZZLEFRAME模块.......................................... 9 附录1.2 PUZZLEPAD模块........................................... 12 附录1.3 SQUAREPOINT模块......................................... 20 附录2 ECLIPSE运行源程序清单....................................... 22 参考文献.........................................................32模板游戏的设计1 概述1.1 课程设计目的利用所学高级语言的语法特性,结合数据结构算法、java语言使用规则、java的基本应用等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。

java课程设计报告2048

java课程设计报告2048

java课程设计报告2048一、教学目标本课程旨在通过2048游戏的项目实践,让学生掌握Java编程的基本概念和方法。

知识目标包括理解Java的基本语法、数据结构、控制流程和类与对象的概念。

技能目标则是培养学生运用Java编程解决实际问题的能力,以及良好的编程习惯和团队协作能力。

情感态度价值观目标则是激发学生对计算机科学的兴趣,培养他们勇于探索和创新的科学精神。

二、教学内容教学内容以《Java编程思想》教材为基础,涵盖Java基本语法、数据类型、控制结构、面向对象编程、异常处理等核心知识点。

课程将从简单的Java程序设计开始,逐步深入到复杂的数据结构和算法,最后通过实现2048游戏,让学生运用所学知识解决实际问题。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

讲授法用于讲解Java的基本语法和概念,案例分析法用于分析实际编程问题,实验法用于让学生动手实践,巩固所学知识。

通过多样化的教学方法,激发学生的学习兴趣,提高他们的主动性和创新能力。

四、教学资源教学资源包括《Java编程思想》教材、相关参考书籍、网络资源以及实验设备。

教材为学生提供系统的学习材料,参考书籍用于拓展知识视野,网络资源提供丰富的学习资料和实践案例。

实验设备则为学生提供动手实践的机会,让他们在实践中加深对Java编程的理解。

五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践四个方面。

平时表现主要评估学生的课堂参与度和团队协作能力,作业则评估学生对知识点的理解和应用能力,考试则评估学生的知识掌握程度,项目实践则评估学生的实际编程能力和解决问题的能力。

评估方式将尽量客观、公正,全面反映学生的学习成果。

六、教学安排本课程的教学安排将紧凑合理,确保在有限的时间内完成教学任务。

课程将按照教材的章节顺序进行,每个章节都将有足够的时间进行讲解和实践。

同时,教学安排还会考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等,尽量使教学安排符合学生的需求。

《火柴棒游戏》教案

《火柴棒游戏》教案

《火柴棒游戏》教案一、教学目标1、让学生了解火柴棒游戏的规则和基本玩法。

2、培养学生的观察能力、动手能力和逻辑思维能力。

3、通过游戏,激发学生对数学的兴趣,提高学生解决问题的能力。

二、教学重难点1、重点(1)掌握火柴棒游戏的常见题型和解题思路。

(2)培养学生的空间想象力和创新思维。

2、难点(1)如何引导学生从不同角度思考问题,找到多种解决方案。

(2)对于较复杂的火柴棒谜题,如何帮助学生理清思路,逐步解决。

三、教学方法讲授法、演示法、实践法、讨论法四、教学过程1、导入(3 分钟)通过展示一些用火柴棒摆成的简单图形,如三角形、正方形等,引起学生的兴趣,然后提问:“同学们,你们知道这些图形是用几根火柴棒摆成的吗?如果移动其中的几根火柴棒,能不能变成其他的图形呢?”从而引出本节课的主题——火柴棒游戏。

2、知识讲解(7 分钟)(1)介绍火柴棒游戏的规则:只能移动火柴棒,不能折断或添加,最终要使图形或算式符合要求。

(2)展示一些简单的火柴棒算式,如“2 + 3 =8”,让学生思考如何通过移动火柴棒使等式成立。

引导学生观察数字的组成,思考哪些火柴棒的移动可以改变数字的大小。

3、示例演示(10 分钟)(1)以“移动两根火柴棒,使三角形变成四边形”为例,教师在黑板上进行演示,边移动边讲解思路。

(2)再展示一个较复杂的例子,如“移动三根火柴棒,使小鱼的方向改变”,让学生先自己思考,然后教师再进行讲解。

4、小组实践(15 分钟)将学生分成小组,每个小组发放一些火柴棒和题目卡片。

题目包括改变图形的形状、使算式成立等。

小组成员相互讨论,共同完成题目。

教师在教室里巡视,及时给予指导和帮助。

5、小组展示与交流(10 分钟)每个小组派代表上台展示他们的解题过程和结果,其他小组可以提问和发表自己的看法。

教师对每个小组的表现进行点评和总结,肯定学生的努力和创新思维,同时指出存在的问题和不足之处。

6、拓展练习(5 分钟)给出一些更具挑战性的题目,如“移动四根火柴棒,使两个正方形变成三个正方形”,让学生在课后继续思考和探索。

Java 火柴游戏

Java 火柴游戏

哈夫曼编码求解应用[适用对象]计算机科学与技术(医药软件开发方向)专业[实验学时] 3学时一、实验目的掌握采用哈夫曼树构造哈夫曼编码的方法。

二、实验原理假设有N个权值{W1、W2、……WN},试构造一棵有N个叶子结点的二叉树,每个叶子结点带权为Wi,则其中带权路径长度之和最小的二叉树称作最优二叉树或哈夫曼树。

三、仪器设备计算机。

四、相关知识点掌握前缀编码的概念。

五、实验步骤#include <stdio.h>#include <stdlib.h>#include <string.h>//Huffman树的存储结构#define n 5 //叶子数目#define m 2*n-1 //树中结点总数typedef struct //结点类型{ float weight; //权值,不妨设权值均大于零int lchild,rchild,parent; //左右孩子及双亲指针}HTNode;typedef HTNode HuffmanTree[m]; //HuffmanTree是向量类型typedef struct{ char ch; //存储字符char bits[n+1]; //存放编码位串}CodeNode;typedef CodeNode HuffmanCode[n];void InitHuffmanTree(HuffmanTree T); //初始化Huffman 树void InputWeight(HuffmanTree T); //输入权值void SelectMin(HuffmanTree T,int i,int *p1,int *p2);void main(){void CreateHuffmanTree(HuffmanTree T); //构造Huffman 树void CharSetHuffmanEncoding(HuffmanTree T,HuffmanCode H);HuffmanTree T;HuffmanCode H;CreateHuffmanTree(T);CharSetHuffmanEncoding(T,H);}void CreateHuffmanTree(HuffmanTree T){ //构造Huffman树,T[m-1]为其根结点int i,p1,p2;InitHuffmanTree(T); //将T初始化InputWeight(T); //输入叶子权值至T[0..n-1]的weight域for(i=n;i<m;i++) //共进行n-1次合并,新结点依次存于T[i]中{ SelectMin(T,i-1,&p1,&p2);//在T[0..i-1]中选择两个权最小的根结点,其序号分别为p1和p2T[p1].parent=T[p2].parent=i;T[i].lchild=p1; //最小权的根结点是新结点的左孩子T[i].rchild=p2; //次小权的根结点是新结点的右孩子T[i].weight=T[p1].weight+T[p2].weight;}}void InitHuffmanTree(HuffmanTree T){ //初始化Huffman树int i;for (i=0;i<m;i++){T[i].weight=0;T[i].lchild=T[i].rchild=T[i].parent=NULL;}}void InputWeight(HuffmanTree T){ //输入权值int i;for (i=0;i<n;i++){printf("请输入第%d个权值:",i+1);scanf("%f",&T[i].weight);}}void SelectMin(HuffmanTree T,int i,int *p1,int *p2){ //在T中选择两个权最小的根结点int j;float min1,min2;min1=min2=-1;for(j=0;j<=i;j++)if(T[j].parent==NULL){if(T[j].weight<min1||min1==-1){if(min1!=-1){min2=min1;*p2=*p1;}min1=T[j].weight;*p1=j;}elseif(T[j].weight<min2||min2==-1){min2=T[j].weight;*p2=j;}}}void CharSetHuffmanEncoding(HuffmanTree T,HuffmanCode H) { //根据Huffman树T求Huffman编码表Hint c,p,i; //c和p分别指示T中孩子和双亲的位置char cd[n+1]; //临时存放编码int start; //指示编码在cd中的起始位置cd[n]='\0'; //编码结束符printf("请输入字符:");for(i=0;i<n;i++) //依次求叶子T[i]的编码{H[i].ch=getchar(); //读入叶子T[i]对应的字符start=n; //编码起始位置的初值c=i; //从叶子T[i]开始上溯while((p=T[c].parent)!=NULL)//直至上溯到T[c]是树根为止{ //若T[c]是T[p]的左孩子,则生成代码0;否则生成代码1cd[--start]=(T[p].lchild==c)?'0':'1';c=p; //继续上溯}strcpy(H[i].bits,&cd[start]); //复制编码位串}for(i=0;i<n;i++)printf("第%d个字符%c的编码为%s\n",i+1,H[i].ch,H[i].bits);}六、实验报告要求按江西中医学院教务处实验科对综合性实验的规范要求编写相应实验报告。

java游戏课程设计报告

java游戏课程设计报告

java游戏课程设计报告一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和程序结构,理解面向对象编程的核心概念;2. 使学生了解游戏开发的基本流程,掌握游戏设计的基本框架;3. 帮助学生掌握Java游戏编程中常用的数据结构和算法。

技能目标:1. 培养学生运用Java语言进行游戏开发的能力,能够独立设计和编写简单的Java游戏;2. 提高学生分析问题和解决问题的能力,能够在游戏开发过程中灵活运用所学知识;3. 培养学生的团队协作能力,学会与他人合作共同完成游戏项目。

情感态度价值观目标:1. 激发学生对编程和游戏开发的兴趣,培养其探索精神和创新意识;2. 培养学生积极向上的学习态度,养成自主学习、合作学习的良好习惯;3. 引导学生正确对待游戏,认识到游戏在娱乐和学习中的积极作用,树立正确的价值观。

课程性质:本课程为选修课程,适用于对Java编程和游戏开发感兴趣的学生。

学生特点:学生具备一定的Java编程基础,对游戏开发有浓厚的兴趣,具有较强的动手能力和创新意识。

教学要求:结合学生特点和课程性质,注重实践操作,以项目为导向,培养学生的实际动手能力和团队协作能力。

在教学过程中,关注学生的个体差异,提供个性化的指导和帮助,确保课程目标的实现。

通过本课程的学习,使学生能够掌握Java游戏编程的基本技能,为后续深入学习奠定基础。

二、教学内容1. Java基本语法和程序结构复习:包括变量、数据类型、运算符、控制结构等,涉及教材第一章至第三章内容。

2. 面向对象编程基础:类与对象、构造方法、继承与多态、接口与实现,涉及教材第四章至第六章内容。

- 游戏设计基本框架:游戏循环、游戏状态、场景切换等。

3. Java游戏编程常用数据结构和算法:数组、链表、堆栈、队列、排序和搜索算法等,涉及教材第七章至第八章内容。

4. Java游戏开发实践:- 游戏项目策划:学习如何撰写游戏设计文档,明确游戏类型、玩法、角色设定等。

Java课程设计——2048小游戏(红红火火恍恍惚惚还很困)

Java课程设计——2048小游戏(红红火火恍恍惚惚还很困)

Java课程设计——2048⼩游戏(红红⽕⽕恍恍惚惚还很困)1.团队成员介绍及任务分配何汐(组长)深受NetBeans折磨发誓再也不⽤了背景⾳乐线程开局模式界⾯美化设计GUI(主菜单及游戏页⾯)李永会(组员)在⽂件流⾥⾯险些淹死登录&&注册排⾏榜GUI(登录及排⾏榜)汪⾬(组员)哪⾥需要哪⾥搬读取进度后退⼀步排⾏榜数据处理2.项⽬git地址3.git提交记录3.项⽬功能架构图与主要功能流程图项⽬功能架构主要功能流程图4.项⽬UML图5.项⽬运⾏截图注册⽤户登录失败继续游戏新游戏返回主菜单关闭游戏帮助&&排⾏榜6.项⽬关键代码1.登录界⾯设计建⽴⼀个板块jp插⼊背景图JPanel构建背景图需要重构new JPanel分别将⽤户名和输⼊框、密码和输⼊框、按钮存为⼀个⾯板利⽤GridLayout对于上述三个⾯板进⾏布局其他窗⼝的界⾯设计均采⽤NetBeans⾃动⽣成public void window() {JLabel label1 = new JLabel("L O G I N");label1.setFont(new Font("Snap ITC", 0, 47));label1.setBounds(200, 10, 100, 10);label1.setForeground(Color.darkGray);JPanel jp1 = new JPanel();ImageIcon bg = new ImageIcon("/image/444.png") ;bg.setImage(bg.getImage().getScaledInstance(900, 600, Image.SCALE_DEFAULT)); JPanel jp = new JPanel(){@Overrideprotected void paintComponent(Graphics g) {ImageIcon icon = new ImageIcon("images/444.png");Image img = icon.getImage();g.drawImage(img, 0, 0, 400, 350, icon.getImageObserver());}};jp.setBorder(new EmptyBorder(10, 10, 10,10));jp.setBackground(null);jp.setOpaque(false);ImageIcon im=new ImageIcon();JLabel jl1 = new JLabel("账号");jl1.setFont(new Font("微软雅⿊", 0, 14));jl1.setOpaque(false);jl1.setIcon(bg);jtfNumber = new JTextField(15);jp1.add(jl1);jp1.add(jtfNumber);jp1.setOpaque(false);JPanel jp2 = new JPanel();JLabel jl2 = new JLabel("密码");jl2.setFont(new Font("微软雅⿊", 0, 14));jpf = new JPasswordField(15);jp2.add(jl2);jp2.add(jpf);jl2.setOpaque(false);jp2.setOpaque(false);JPanel jp3 = new JPanel();JLabel jl3 = new JLabel("姓名");jl3.setFont(new Font("微软雅⿊", 0, 14));jtfName = new JTextField(15);jp3.add(jl3);jp3.add(jtfName);jl3.setOpaque(false);jp3.setOpaque(false);JPanel jps = new JPanel();jps.setBackground(null);jps.setOpaque(false);Dimension preferredSize = new Dimension(80,40);jbLogin = new JButton("注册");jbLogin.setFont(new Font("微软雅⿊", 0, 14));jbLogin.setPreferredSize(preferredSize);jbLogin.addActionListener(this);//给按钮添加响应jbRegister = new JButton("登录");jbLogin.setFont(new Font("微软雅⿊", 0, 14));jbRegister.setPreferredSize(preferredSize);jbRegister.addActionListener(this);//给按钮添加响应jps.add(jbLogin);jps.add(jbRegister);jp.setBackground(null);jl1.setBackground(null);JPanel jpc = new JPanel(new GridLayout(4, 1));// 4⾏1列布局jpc.setBackground(null);jpc.setOpaque(false);jpc.add(jp1);jpc.add(jp2);jpc.add(jp3);jpc.add(jps);jp.add(label1);jp.add(jpc);add(jp);setTitle("登录窗⼝");//窗⼝标题setSize(400, 350);// 窗⼝⼤⼩setLocationRelativeTo(null);// 窗⼝居中}2.排⾏榜创建Player类,定义name、number、mark三个属性,⽤户游戏得分的⽂件存取格式也是这三个属性,⼀⾏⼀⾏地读取装有⽤户游戏得分的⽂件,⽤split()⽅法将读取出来的⼀⾏数据分装成数组,将这个数组赋值给Player类型的数组,调⽤Arrays.sort()⽅法将数组按升序排序,⽤这个排好序的数组去创建排⾏榜的界⾯,排⾏榜⾄多显⽰前五名public Player[] readChart(int k) throws IOException {final String PATH = "ABC.txt";//指定⽂件的路径File file = new File(PATH);int lines = 0;try {FileInputStream fos = new FileInputStream(file);InputStreamReader osw = new InputStreamReader(fos);BufferedReader bw = new BufferedReader(osw);// 使⽤缓冲区数据流封装输⼊流LineNumberReader lineNumberReader = new LineNumberReader(bw);//获取⽂件⾏数,即玩家⼈数lineNumberReader.skip(Integer.MAX_VALUE);lines = lineNumberReader.getLineNumber() + 1;//从0开始计数,所以这⾥算⾏数的时候需要+1}catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}int i = 0;Player factor[] = new Player[lines];//创建玩家类try {if (!file.exists()) {//判断⽂件是否存在,不存在就创建⼀个⽂件file.createNewFile();}FileReader fr = new FileReader(file); // 创建⽂件输⼊流(读取)BufferedReader br = new BufferedReader(fr); // 使⽤缓冲区数据流封装输⼊流String str = "";while ((str = br.readLine()) != null) {try {String[] data = str.split(" ");int a = Integer.parseInt(data[2]);factor[i]=new Player(data[0],data[1],a);//传⼊name、number、marki++;}catch (ArrayIndexOutOfBoundsException e){System.out.println("数组下标越界");}}Arrays.sort(factor);//根据分数从⾼到低排序}catch(NullPointerException e) {e.printStackTrace();}catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}if(k==0)windoow(factor);return factor;}7.代码静态扫描修改后8.尚待改进或者新的想法尚待改进Beans的默认代码只⽀持JLabel和JButton设置背景图⽚,定制相关的代码之后,还是不能对于⾯板甚⾄整个窗体设置背景图⽚,NetBeans设计页⾯和eclipse⾃⼰写页⾯差别也蛮⼤的,所以最后只是设置了背景颜⾊;2.时间紧任务重,只是构造了游戏的背景⾳乐,没有来的及设计游戏移动⾳效;3.团队协作上,任务分配上有冲突有重复,效率不⾼;4.代码规范上,采⽤插件之后发现有很多以前不会注意到的⼩细节,例如注释的格式是/**注释*/,有些地⽅需要标明@author;5.在GUI设计上,由于对⼀些复杂组件不是特别了解,只是采⽤JPanel⼀些⼩组件,还有很多更简单⽅便的组件没有去设计;新的想法1.将2048⼩游戏转变成安卓⼿机⼩游戏,这个开始有设想过,但是后⾯百度查资料的时候发现真的还挺难的,这个还是得慢慢来;2.加⼊⽅块移动的⾳效;3.在经典玩法之外设计出速度模式;4.增加签到功能获取钻⽯,以钻⽯获取后退⼀步或者开启特殊关卡的机会;5.增设双⼈对战模式;6.将数字⽅块转换成abcd字母或者其他具有递进性的元素;![]。

java编程小游戏课程设计

java编程小游戏课程设计

java编程小游戏课程设计一、课程目标知识目标:1. 学生能理解并掌握Java编程基础,包括数据类型、变量、运算符和简单控制流程。

2. 学生能运用面向对象编程思想,设计并实现游戏中的角色和物品类。

3. 学生能运用Java异常处理机制处理游戏中可能出现的错误。

技能目标:1. 学生能够独立设计并编写简单的Java小游戏,展示故事情节和互动性。

2. 学生通过项目实践,掌握使用集成开发环境(IDE)进行代码编写、调试和运行的能力。

3. 学生能够运用所学的Java知识解决实际编程问题,具备初步的编程调试技巧。

情感态度价值观目标:1. 学生通过游戏编程激发对计算机编程的兴趣,培养自主学习能力和创新思维。

2. 学生在团队协作中培养沟通能力和集体荣誉感,学会共同解决问题。

3. 学生通过编程实践,认识到编程对生活的影响,增强社会责任感。

课程性质:本课程为实践性强的Java编程课程,通过设计小游戏的方式,使学生在实践中掌握编程知识。

学生特点:学生具备一定的Java编程基础,对游戏有浓厚兴趣,喜欢动手实践。

教学要求:课程注重理论与实践相结合,鼓励学生主动探索,培养解决问题的能力。

教学过程中,关注学生个体差异,提供个性化指导。

通过课程学习,学生能够达到以上设定的知识、技能和情感态度价值观目标,为后续学习奠定基础。

二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握Java编程小游戏的设计与开发。

1. Java基础复习:回顾课本中数据类型、变量、运算符、控制流程等内容,为游戏编程打下基础。

- 教材章节:第1章 Java语言概述,第2章 基本数据类型与表达式,第3章 流程控制。

2. 面向对象编程:学习类与对象的概念,掌握封装、继承、多态等特性,应用于游戏角色和物品的设计。

- 教材章节:第4章 类与对象,第5章 继承与多态。

3. 异常处理:学习Java异常处理机制,编写健壮的游戏代码。

- 教材章节:第6章 异常处理。

JAVA火柴小游戏课程设计报告

JAVA火柴小游戏课程设计报告

课程设计报告书所属课程名称Java综合实践题目取火柴小游戏院(系)信息工程学院班级软件工程(2)班学号学生姓名指导教师2016年 12 月 26 日课程设计(论文)任务书学院信息工程学院专业 15软件工程班级 1 一、课程设计(论文)题目取火柴小游戏二、课程设计(论文)工作:自 2016年12月 20 日起至 2016年 12 月 31日止。

三、课程设计(论文)的内容要求:1.本课程设计的目的(1)掌握Java语言的程序设计方法;(2)理论联系实际.进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求1)基本要求:(1)熟悉JAVA开发环境.掌握JAVA程序的编译和运行;(2)掌握JAVA基本编程技术和方法;(3)掌握GUI图形界面编程技术;(4)了解异常处理机制。

2)课程设计论文编写要求(1)理论设计部分以课程设计论文的形式提交.格式必须按照课程设计论文标准格式进行书写和装订。

(2)课程设计报告(论文)包括目录、设计目的、实现思路、实现步骤、设计心得参考文献、附录等;3)课程设计评分标准:(1)学习态度:10分;(2)系统设计:20分;(3)编程调试:20分;(4)回答问题:20分;(5)论文撰写:30分。

4)参考文献:(1)丁振凡主编. Java语言实用教程[M]. 北京邮电大学出版社. 2004.12(2)丁振凡主编. Java语言实用教程实验指导[M]. 北京邮电大学出版社. 2004.12 (3)5)课程设计进度安排1.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2.程序模块设计分析阶段(8学时):程序总体设计、详细设计3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试4.撰写论文阶段(4学时):总结课程设计任务和设计内容.撰写课程设计论文6)课程设计题目具体要求:编写一个程序使计算机随机产生20—50根火柴.由人与计算机轮流拿.每次拿的数量不超过3根.拿到最后一根为胜。

java火柴课程设计

java火柴课程设计

java火柴课程设计一、课程目标知识目标:1. 学生能理解Java编程语言的基本语法和结构,掌握面向对象编程的基本概念;2. 学生能运用Java编程解决实际问题,设计并实现一个简单的火柴拼图游戏;3. 学生了解并能运用数组、循环、条件语句等基本编程结构,实现对火柴拼图游戏的逻辑控制。

技能目标:1. 学生能够运用所学知识进行需求分析,独立设计并编写Java程序;2. 学生通过课程学习,培养解决问题的能力,学会运用编程思维解决实际生活中的问题;3. 学生掌握调试和优化Java程序的方法,提高程序的质量和效率。

情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,树立学习自信;2. 学生学会合作与交流,培养团队精神和沟通能力,共同完成火柴拼图游戏的设计与实现;3. 学生通过编程实践,培养严谨、认真、细心的学习态度,树立正确的价值观。

本课程针对高年级学生,结合Java编程语言和实际应用,以提高学生的编程能力和逻辑思维能力为主旨。

课程性质为实践性、综合性,注重学生动手能力的培养。

在教学过程中,要求教师关注学生的个体差异,引导学生主动探索,培养学生自主学习能力和创新精神。

通过分解课程目标为具体学习成果,为教学设计和评估提供明确依据。

二、教学内容1. Java基本语法和结构:包括变量、数据类型、运算符、控制结构(如if-else 语句、循环结构)等,对应教材第1章至第3章内容。

2. 面向对象编程基础:介绍类、对象、构造方法、封装、继承、多态等概念,对应教材第4章至第6章内容。

3. 数组:数组声明、初始化、遍历、排序等操作,对应教材第7章内容。

4. 火柴拼图游戏设计:a. 游戏需求分析,明确游戏规则和目标;b. 设计游戏界面和交互逻辑;c. 编写游戏逻辑代码,包括火柴移动、胜利条件判断等;d. 游戏测试与优化,对应教材第8章实例分析。

5. 编程实践:结合教材实例和课程设计要求,指导学生完成火柴拼图游戏的编写和调试。

puzzlejava课程设计报告

puzzlejava课程设计报告

puzzlejava课程设计报告一、教学目标本课程旨在让学生掌握Puzzle Java的基本概念、语法以及编程技巧。

通过本课程的学习,学生将能够理解并运用面向对象编程的思想,熟练使用Java编写简单的小程序。

1.理解Java语言的基本语法和数据结构。

2.掌握面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.熟悉Java的标准库和常用API。

4.能够使用Java编写简单的控制台应用程序。

5.能够使用Java编写图形用户界面应用程序。

6.能够进行基本的程序调试和性能优化。

情感态度价值观目标:1.培养学生的编程兴趣,提高他们对计算机科学的热爱。

2.培养学生的问题解决能力和创新思维。

3.培养学生团队合作和自主学习的精神。

二、教学内容本课程的教学内容主要包括Java语言的基本语法、数据结构、面向对象编程以及常用API。

1.Java语言的基本语法:变量、数据类型、运算符、控制结构等。

2.数据结构:数组、链表、栈、队列、树等。

3.面向对象编程:类、对象、封装、继承、多态等。

4.常用API:Java标准库、集合框架、多线程等。

三、教学方法本课程将采用讲授法、案例分析法和实验法进行教学。

1.讲授法:用于讲解基本概念、语法和编程技巧。

2.案例分析法:通过分析实际案例,让学生理解并掌握面向对象编程的思想。

3.实验法:让学生通过动手实践,巩固所学知识和技能。

四、教学资源1.教材:《Puzzle Java入门与应用》。

2.参考书:《Java核心技术》、《Effective Java》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,每个部分所占比例分别为30%、30%和40%。

1.平时表现:通过课堂参与、提问、小组讨论等方式评估学生的学习态度和理解程度。

2.作业:布置适量的编程作业,评估学生的编程能力和应用能力。

3.考试:包括期中考试和期末考试,主要评估学生对课程知识的掌握程度。

程序设计基础课程设计-23根火柴游戏、通讯录管理

程序设计基础课程设计-23根火柴游戏、通讯录管理

课程设计报告1、23根火柴游戏设计题目:2、通讯录管理学生姓名:专业:班级:学号:指导教师:完成日期:合肥工业大学计算机与信息学院目录一、23根火柴游戏—————————————————————2(一)需求和规格说明——————————————————————————2 (二)设计———————————————————————————————2 (三)用户手册—————————————————————————————2 (四)调试及测试————————————————————————————2 运行实例—————————————————————————————2源程序——————————————————————————————4二、通讯录管理——————————————————————8(一)需求和规格说明——————————————————————————8 (二)设计———————————————————————————————8 (三)用户手册—————————————————————————————8 (四)调试及测试————————————————————————————8 运行实例—————————————————————————————8源程序——————————————————————————————10一、23根火柴游戏(一)需求和规格说明23根火柴游戏: 两个游戏者开始拥有23根火柴(或小棒)。

每个游戏者轮流移走1根、2根或3根火柴,拿到最后一根火柴的就算输了。

编一程序与计算机玩这个游戏。

(二)设计通过算法与程序的设计,让电脑具备类似思考的能力,通过主函数的输出打印游戏界面,让玩家认识游戏,进行难度选择时通过getMin(a, b)、Smanvscpu()以及Dmanvscpu()的函数调用,在所选择的函数对象中插入相关的运算,并让电脑随即对应进行j = rand()%(getMin(num,3))+1或者j = (num%4 == 0)?3:num%4-1相关的运算,确定电脑所取的函数变量类型含义作用getMin(a, b) a整型各为两值之一模拟运算实行取两数之间最小值的函数调用bSmanvscpu()i整型人所取火柴数在该类火柴游戏中实行人机对战为正常难度选项的函数调用j 电脑所取火柴数num 剩余火柴数Dmanvscpu()i整型人所取火柴数在该类火柴游戏中实行人机对战为困难难度选项的函数调用j 电脑所取火柴数num 剩余火柴数main()range整型选择难度等级作为主函数,通过一系列操作进行该游戏的执行choose 确定是否继续游戏(三)用户手册1.进行游戏之前需要通过输入数字确定游戏难度2.完成游戏后可以通过数字选择是否需要重玩(四)调试及测试运行实例(1)游戏开始(2)正常难度选择对战(3)继续游戏执行困难难度游戏(4)退出游戏源程序:#include <iostream> using namespace std;int getMin(int a,int b) {return a<b?a:b; }//正常人机对战int Smanvscpu() {int i,j,num=23;cout<<"游戏开始"<<endl;while(num>0){cout<<"当前还剩下"<<num<<"根火柴,请玩家拿取火柴"<<endl;cout<<"1.一根火柴\t";if(num>=2) cout<<"2.两根火柴\t";if(num>=3) cout<<"3.三根火柴"<<endl;cin>>i;//人取的火柴,所得到剩下的火柴数switch(i){case 1:num=num-1;break;case 2:num=num-2;break;case 3:num=num-3;break;default:cout<<"请正确输入序号\n";continue;}//确定火柴是否取完if(num == 0){cout<<"游戏结束,玩家输掉了游戏"<<endl;break;}//电脑开始确定所取火柴数if(num > 5){j = rand()%3+1;}else{if(num%4 == 1){j = rand()%(getMin(num,3))+1; //求余结果1:拿火柴数1}else{j = (num%4 == 0)?3:num%4-1; //求余结果4:拿火柴数3 ;求余结果拿火柴数2:1、3:2}}cout<<"电脑拿走了"<<j<<"根火柴"<<endl;num=num-j;//判断电脑是否输if(num == 0){cout<<"游戏结束,电脑输掉了游戏"<<endl;break;}}return 0;}//困难人机对战int Dmanvscpu(){int i,j,num=23;cout<<"游戏开始"<<endl; //游戏开始while(num>0){cout<<"当前还剩下"<<num<<"根火柴,请玩家拿取火柴"<<endl;cout<<"1.一根火柴\t";if(num>=2) cout<<"2.两根火柴\t";if(num>=3) cout<<"3.三根火柴"<<endl;cin>>i;//人取的火柴,所得到剩下的火柴数switch(i){case 1:num=num-1;break;case 2:num=num-2;break;case 3:num=num-3;break;default:cout<<"请正确输入序号\n";continue;}//确定火柴是否取完if(num == 0){cout<<"游戏结束,玩家输掉了游戏"<<endl;break;}//电脑开始确定所取火柴数if(num%4 == 1){j = rand()%(getMin(num,3))+1; //4n+1时,随机}else{j = (num%4 == 0)?3:num%4-1; //4n时拿三根;4n+2、4n+3时分别拿1、2根}cout<<"电脑拿走了"<<j<<"根火柴"<<endl;num=num-j;//判断电脑是否输if(num == 0){cout<<"游戏结束,电脑输掉了游戏"<<endl;break;}}return 0;}int main(){int choose,range;cout<<"******************************************************************** "<<endl;cout<<"******************************************************************** "<<endl;cout<<"*******23根火柴游戏: 两个游戏者开始拥有23根火柴。

火柴游戏(c语言课程设计)

火柴游戏(c语言课程设计)

c课程设计任务题目火柴游戏学院专业班级学生姓名学号月日至月日共周指导教师(签字)院长(签字)2013年6月21 日一、程序内容 (2)二、实验程序设计 (2)(1)需求分析(2)设计思路三、设计过程 (2)四、实验源代码 (3)五、代码解释 (4)六、运行结果 (4)12一、程序内容:23根火柴游戏: 两个游戏者开始拥有23根火柴(或小棒)。

每个游戏者轮流移走1根、2根或3根火柴,拿到最后一根火柴的就算输了。

编一程序与计算机玩这个游戏。

二、实验程序设计(1)需求分析:运行程序能使人与计算机进行23根火柴游戏。

(2)设计思路:玩家输入数据根据电脑运算所输出的数据,与其进行博弈,哪一方取到最后一根火柴就输了。

三、设计过程(1) 建立iostream/ofstream/fstream 、输入、输出、输入输出流对象,建立ifndef,define 预编命令,STRUCT 数据.(2)根据设计思路运用if 判断语句设计(3)建立main 函数(4)运行main 函数调试四、实验源代码:#include<iostream>using namespace std; //全局命名空间,标识符#include <stdlib.h>void main(){int getMin(int a,int b); //对getMin的函数声明printf("游戏开始\n");static int i=23;int num=0,temp=0;while(i>0){cout<<"请问拿走几根火柴(1,2或3根):"; //输出并对变量的重载cin>>num; if(num==1||num==2||num==3) //输入数据{ i=i-num;if(i<=1){cout<<"恭喜你获胜了!!!!"<<endl;return;}else printf("请正确输入序号\n");temp= rand()%(getMin(i,3))+1; //调用getMin函数cout<<"电脑选择了:"<<temp<<"根"<<endl;i=i-temp;if(i==0){cout<<"你输了,下次加油!!!!"<<endl;return;}cout<<"还剩"<<i<<"根火柴...."<<endl;} else{cout<<"你的输入有误!!"<<endl;printf("请正确输入序号\n");}}return;}int getMin(int a,int b) //定义getMin函数{return a<b?a:b; //若a<b,将返回a}34五、代码解释:using namespace std 指标识符的各种可见范围,可以避免导致全局命名冲突问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告书所属课程名称Java综合实践题目取火柴小游戏院(系)信息工程学院班级软件工程(2)班学号学生指导教师2016年 12 月 26 日课程设计(论文)任务书学院信息工程学院专业 15软件工程班级 1 一、课程设计(论文)题目取火柴小游戏二、课程设计(论文)工作:自 2016年12月 20 日起至 2016年 12 月 31日止。

三、课程设计(论文)的容要求:1.本课程设计的目的(1)掌握Java语言的程序设计方法;(2)理论联系实际.进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求1)基本要求:(1)熟悉JAVA开发环境.掌握JAVA程序的编译和运行;(2)掌握JAVA基本编程技术和方法;(3)掌握GUI图形界面编程技术;(4)了解异常处理机制。

2)课程设计论文编写要求(1)理论设计部分以课程设计论文的形式提交.格式必须按照课程设计论文标准格式进行书写和装订。

(2)课程设计报告(论文)包括目录、设计目的、实现思路、实现步骤、设计心得参考文献、附录等;3)课程设计评分标准:(1)学习态度:10分;(2)系统设计:20分;(3)编程调试:20分;(4)回答问题:20分;(5)论文撰写:30分。

4)参考文献:(1)丁振凡主编. Java语言实用教程[M]. 邮电大学. 2004.12(2)丁振凡主编. Java语言实用教程实验指导[M]. 邮电大学. 2004.12(3)cai.ecjtu.jx.5)课程设计进度安排1.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2.程序模块设计分析阶段(8学时):程序总体设计、详细设计3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试4.撰写论文阶段(4学时):总结课程设计任务和设计容.撰写课程设计论文6)课程设计题目具体要求:编写一个程序使计算机随机产生20—50根火柴.由人与计算机轮流拿.每次拿的数量不超过3根.拿到最后一根为胜。

使用图形界面编写.要求界面布局合理.并且能够顺利关闭界面.退出程序。

学生签名:2016年12 月25日目录第1章系统设计目的 (1)第2章系统实现思路 (2)第3章系统详细设计 (3)第4章系统调试运行 (10)第5章课程设计心得 (13)第6章参考文献 (13)第7章附录 (14)第1章系统设计目的1)设计一个简单的取火柴小游戏,可以实现以下功能: 1:使计算机随机产生数;2:设计出人性化的游戏界面;3:给予不同的提示完成游戏;4:能够顺利关闭游戏.退出游戏。

2)通过这次设计.可以帮助学生:1:提高对Java语言设计的掌握能力;2:理论联系实际.进一步提高学生的软件开发技术; 3:培养学生分析、解决问题的能力。

第2章系统实现思路该游戏程序设计的主要容是使用java中的各种组件与容器互相搭配来完成的一个小游戏。

游戏设计中的主要的知识要点包括java的awt包中的颜色类.图形类.图像类.事件监听器类.和util包中的stack类.timer类.和timertask类的使用方法.以及swing包中的窗口类.按钮类.标签类.面板类.复选框类等一些常用组件的用法。

通过这些组件来掌握事件监听器的用法.java中栈的用法.以及实现了Runnable类的TimerTask类的用法.通过这个类实现线程技术.还有Graphics类中的主要方法的使用.学会运用这些方法来来绘制火柴.绘制图片的目的。

1:界面设计设置重置按钮的位置.左上角坐标为(250.10).大小为宽100.高20;设置用户标签的位置.左上角坐标为(400,10).大小为宽200.高20;2:功能设计为“Reset”添加行为事件监听器.采用匿名类的方式。

为用户按钮定义行为事件监听器。

3:代码设计编写每个控件的相关代码.并进行调试。

第3章系统详细设计1:界面设计创建一个游戏界面.设置用户拿按钮的位置.下拉列表框中的位置.游戏中火柴的颜色.位置和大小。

主要代码:import java.awt.Color;//引入颜色类import ponent;//引入组件类import java.awt.Dimension;//引入封装单个对象中组件的宽度和高度(精确到整数)的类import java.awt.Graphics;//引入图形类import java.awt.Graphics2D;//引入二维图形类import java.awt.event.ActionEvent;//引入事件类import java.awt.event.ActionListener;//引入事件监听器类import java.awt.image.BufferedImage;//引入缓冲图像类import java.util.Stack;//引入栈类import java.util.Timer;//引入计时器类import java.util.TimerTask;//引入了实现Runnable接口的类.并具有了线程的功能import javax.swing.JButton;//引入按钮类import javax.swing.JComboBox;//引入下拉列表框类import javax.swing.JFrame;//引入主框架主窗口类import javax.swing.JLabel;//引入标签类import javax.swing.JOptionPane;//引入选项面板类import javax.swing.JPanel;//引入面板类public class ha//定义一个公共的主类Test{public static void main(String[] args)//定义主方法main{new ha();//调用Test类的构造方法Test()}private static final int MIN_CNT = 20;//定义一个常量.设置为最小火柴棍数量为20private static final int MAX_CNT = 50;//定义一个常量.设置为最大火柴棍数量为50private static final int MAX_TAKE = 3;//定义一个常量.设置为最大拿火柴数量为3private static final int DELAY = 1000;//定义一个常量.设置为延迟时间为1000private JFrame mainFrame;//定义主框架变量private MyPaintPanel[] paints;//定义我自己画的面板数组变量private JButton userBtn;//定义我的按钮属性private JComboBox userNum;//定义我的下拉列表private JButton compBtn;//定义电脑按钮属性private JLabel compTxt;//定义电脑标签private Timer timer;//定义计时器的变量private ha()//定义一个私有的构造方法.来完成游戏的初始化动作{mainFrame = new JFrame();//实例化一个主窗口mainFrame.setResizable(false);//设置窗体大小不可调整mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认的关闭操作为关闭窗口JPanel mainPanel = new JPanel();//实例化一个主面板对象mainPanel.setLayout(null);//设置布局为空.即没有任何布局mainPanel.setPreferredSize(new Dimension(600, 400));//将组件的首选大小设置为常量值mainFrame.add(mainPanel);//将主面板添加到框架(窗口)中JLabel lab11 = new JLabel("电脑");//创建并设置标签按钮的容为电脑lab11.setHorizontalAlignment(JLabel.CENTER);//设置标签容沿 X 轴的对齐方式lab11.setBounds(0, 10, 200, 20);//设置该标签显示位置为坐标(0,10).宽200.高20mainPanel.add(lab11);//将标签加入主面板JButton btn11 = new JButton("Reset");//定义一个重新来的按钮btn11.addActionListener(new ActionListener()//为“Reset”添加行为事件监听器.采用匿名类的方式{public void actionPerformed(ActionEvent e)//实现监听器中的方法{init();//当单击此按钮时.调用该初始化方法}});btn11.setBounds(250, 10, 100, 20);//设置重置按钮的位置.左上角坐标为(250.10).大小为宽100.高20mainPanel.add(btn11);//重来标签添加到主面板上JLabel lab12 = new JLabel("用户");//定义用户标签lab12.setHorizontalAlignment(JLabel.CENTER);//设置用户水平方式为居中lab12.setBounds(400, 10, 200, 20);//设置用户标签的位置.左上角坐标为(400,10).大小为宽200.高20mainPanel.add(lab12);//将用户标签添加到主面板上compBtn = new JButton("Computer First");//定义一个电脑首先拿的按钮compBtn.addActionListener(new ActionListener()//为电脑开始按钮定义行为事件监听器{Overridepublic void actionPerformed(ActionEvent e)//行为监听器中的默认方法{compTake();//当单击电脑按钮时.调用电脑拿方法}});compBtn.setBounds(10, 40,, 20);//设置电脑按钮的位置.左上角坐标为(10.40).大小为宽180.高20mainPanel.add(compBtn);//按钮添加到主面板上compTxt = new JLabel();//定义一个空标签compTxt.setBounds(10, 70, 400, 20);//设置空标签的位置.左上角坐标为(10.70).大小为宽400.高20mainPanel.add(compTxt);//将空标签加到主面板上userBtn = new JButton("Take");//定义用户拿按钮userBtn.addActionListener(new ActionListener()//为用户按钮定义行为事件监听器public void actionPerformed(ActionEvent e){userTake();//当单击用户拿按钮时.调用用户拿方法}});userBtn.setBounds(400, 40, 90, 20);//设置用户拿按钮的位置.左上角的坐标为(400,40).大小为宽90.高20mainPanel.add(userBtn);//用户按钮添加到主面板上userNum = new JComboBox();//定义一个下拉列表框for (int i = 0; i < MAX_TAKE; i++)//定义一个拿最大的循环{userNum.addItem(i + 1);//通过循环给列表框逐个添加选项}userNum.setBounds(495, 40, 90, 20);//设置下拉列表框中的位置.左上角的坐标为(495,40).大小为宽90.高20mainPanel.add(userNum);//将列表框添加到主面板上paints = new MyPaintPanel[3];//定义我画的面板for (int i = 0; i < 3; i++)//用3次循环来画出三个面板{paints[i] = new MyPaintPanel();//分别创建3个面板.并调用构造方法初始化三个面板paints[i].setBounds(5 + 200 * i, 110, 190, 285);//设置三个面板的位置和坐标.间距为5mainPanel.add(paints[i]);//将三个面板分别添加到主面板上}mainFrame.pack();//调整此窗口的大小.以适合其子组件的首选大小和布局。

相关文档
最新文档