《JAVA程序设计》五子棋制作实训.doc_第1页
《JAVA程序设计》五子棋制作实训.doc_第2页
《JAVA程序设计》五子棋制作实训.doc_第3页
《JAVA程序设计》五子棋制作实训.doc_第4页
《JAVA程序设计》五子棋制作实训.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA程序设计实训报告实训题目: 五子棋游戏制作 专 业: 计算机网络 班 级: 14网络(1)班 姓 名: 指导教师: 2015 年 12 月 31日目 录1.实训目的32.实训题目描述和要求42.1 实训题目描述42.2 实训题目要求43.实训报告内容53.1 需求分析53.2 概要设计53.3 详细设计63.4 编码73.5 测试194.总结24实训指导教师评语261.实训目的随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改 变。高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。Java程序设计课程实训,学生可以将理论知识与具体实践相结合,巩固对JAVA相关方法和概念的理解,通过实训单机版五子棋游戏的编程,加深对所学知识的理解和应用。如: 通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。并且让学生能够基本使用实训软件eclipse,以及安装JDK和环境变量的配置。通过本次实训,可以开拓思维,增强编程思想,为深入学习JAVA打下良好基础,在学完此门课程后,能使用Java开发小型应用程序。2.实训题目描述和要求2.1 实训题目描述实训题目:JAVA五子棋单机版游戏制作。描述:五子棋在我国的历史可谓是源远流长,喜爱它的玩家也是大有人在,是很多人的娱乐首选,也是一种竞技项目。但很多的五子棋软件一般都是单机版的,游戏无法在两个玩家之间进行。基于上述原因,五子棋作为一个古老而又有广泛群众基础的游戏,他的完善性无疑是家玩家有很大的影响,在互联网迅速发展的今天,五子棋的流行已经不仅仅只是在现实生活中的面对面的娱乐竞技,在网上也已经是广大玩家的首选娱乐游戏已在各个游戏平台有应用。通过JAVA的swing组件,实现五子棋简单的双人对弈并通过内部条件判断实现输赢的双方下棋过程。2.2 实训题目要求1. 运用JAVA程序设计和Eclipse软件设计出一个五子棋程序。2. 五子棋游戏的主窗口也就是游戏界面的实现(尽量制作一个界面美观的游戏界面)3. 棋子黑白色的设置及判定。4. 完成判断某一横行是否连成五子及所有方向是否连成五子的判断。5. 几个简单按钮的实现,“开始游戏”,“游戏设置”,“游戏说明”,“关于”,“认输”,“退出”。6. 能够完成基本的下棋功能并能判断输赢7. 能够实现开始游戏的功能,随时重新开始一盘游戏。8. 能够实现游戏设置的功能,可以对游戏玩家有时间的设定,且要求时间不能为负数,如果时间为0则无限制,9. 能够实现游戏说明的功能,可以解释游戏的基本规则。10. 能够实现游戏认输的功能,当有一方认输时,游戏结束。11. 能够实现游戏关于的功能,关于游戏的制作及问题解决指南。12. 能够实现游戏退出的功能,当游戏结束时游戏退出。13. 完成当某一方下棋是游戏界面会有游戏信息提示。14. 完成游戏时间设置游戏界面下方会有时间走时功能。3.实训报告内容3.1 需求分析一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败因此如何更好地的了解,分析,明确玩家需求,并且能够准确,清晰以文档的形式表达给游戏制作人,保证开发过程按照满足玩家需求为目的正确开发方向进行,是游戏制作人需要面对的问题。作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求当然最好是要考虑到界面的友好性,作为一个娱乐软件,还应该考虑到玩家在游戏时的舒适性本次实训要求制作的是一个简单的单机版五子棋游戏,所以只需要完成一些最基本的功能即可,例如游戏开始功能、游戏设置功能、游戏认输功能以及游戏退出功能等。3.2 概要设计制作的五子棋游戏整体界面设计为500*500像素大小,其中棋盘大小为360*360像素大小。游戏界面上能够显示相关游戏信息,例如当前游戏玩家信息、游戏剩余时间、游戏输赢信息等。3.3 详细设计整个游戏界面的上方显示当前游戏玩家信息,能够提醒黑白双方下棋。中间靠左显示游戏棋盘,由纵横相互构成一个分割均匀的小正方形。中间靠右放置各个游戏功能按钮,如:“开始游戏”“游戏设置”“游戏说明”“认输”“关于”“退出”,且它们都能各自实现自己的功能。下方显示双方玩游戏玩家剩余时间信息。而判断胜负是这个游戏的核心,一个游戏最重要的部分,如果连判断胜负都不可以实现的话,那么这个游戏程序是没有用的。依据五子棋的基本规则,判断某一方向上是否有同一颜色的棋子连成五个或五个以上的,如果有,那么游戏就结束了,并判先连成五子的一方获得了胜利。效果如下图所示:3.4 编码1. 导入包代码package org.liky.game.frame;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;import javax.swing.JFrame;import javax.swing.JOptionPane;2. 窗口制作代码public FiveChessFrame() /设置标题this.setTitle(五子棋) ;/设置窗体大小this.setSize(500,500);/设置窗体出现的位置this.setLocation(width - 500)/2, (height-500)/2);/设置窗体大小不可改变this.setResizable(false);/将窗体设置为默认关闭程序结束this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/为窗体加入监听器this.addMouseListener(this);/将窗体显示出来this.setVisible(true) ;t.start();t.suspend() ;/刷新屏幕,防止开始游戏时出现无法显示的情况3. 图片路径代码String imagePath = ;try imagePath = System.getProperty(user.dir)+ /bin/image/background.jpg ;bgImage = ImageIO.read(new File(imagePath.replaceAll(, /); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();this.repaint();4. 双缓冲技术代码public void paint(Graphics g) /双缓冲技术防止屏幕闪烁BufferedImage bi = new BufferedImage(500,500,BufferedImage.TYPE_INT_ARGB);Graphics g2 = bi.createGraphics() ;g2.setColor(Color.BLACK);5. 绘制界面信息代码/绘制背景g2.drawImage(bgImage, 1, 25, this) ;/输出标题信息g2.setFont(new Font(黑体,Font.BOLD,20);g2.drawString(游戏信息: + message, 130, 60);/输出时间信息g2.setFont(new Font(宋体,0,16);g2.drawString(黑方时间: +blackMessage, 40, 470);g2.drawString(白方时间: +whiteMessage, 235, 470);6. 绘制棋盘,棋子代码/绘制棋盘for (int i = 0;i19;i+)g2.drawLine(10, 70+20 * i, 370, 70+20 * i);g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);g2.fillOval(188, 248, 4, 4);/绘制棋子x = (x-10) / 20*20+10;y = (y-70) / 20*20+70;/黑子/*g.fillOval(x-7, y-7, 14, 14); /白子 g.setColor(Color,WHTTE); g.fillOval(x-7,y-7,14,14); g.setColor(Color,BLACK); g.drawOval(x-7,y-7,14,14); /绘制全部棋子for (int i= 0; i19;i+)for (int j = 0; j=10 & x = 70 & y = 430)if(x - 10) - (x - 10) /20 * 20) = 10)x = (x - 10) / 20;elsex = (x - 10) / 20 + 1;if(y - 70) - (y - 70) / 20 * 20) =390 & e.getX() =70 & e.getY() = 95)int result = JOptionPane.showConfirmDialog(this, 是否重新开始游戏?);if (result = 0) /现在重新开始游戏/重新开始要做的操作:1,把棋盘清空,allChess这个数组全部数据归0./2.将游戏信息的显示回到开始位置/3.将一步下棋改为黑方for (int i = 0; i 19;i+)for (int j = 0; j =390 & e.getX() =120 & e.getY() = 150)String input = JOptionPane.showInputDialog(请输入游戏最大时间(单位:分钟)如果输入0,表示没有时间限制:);try maxTime = Integer.parseInt(input) * 60;if (maxTime 0) JOptionPane.showMessageDialog(this, 请输入正确信息,不允许输入负数!);if (maxTime = 0) intresult = JOptionPane.showConfirmDialog(this,设置完成,是否重新开始游戏?);if (result = 0)for (int i = 0; i 19;i+)for (int j = 0; j 0) int result = OptionPane.showConfirmDialog(this,设置完成,是否重新开始游戏?);if (result = 0)for (int i = 0; i 19;i+)for (int j = 0; j =390 & e.getX() =170 & e.getY() =390 & e.getX() =250 & e.getY() =390 & e.getX() =320 & e.getY() =390 & e.getX() =370 & e.getY() = 0 & x + xChange = 0 & y + yChange 0)yChange+ ;else yChange-;xChange = tempX ;yChange = tempY ;while (x - xChange = 0 & x - xChange = 0 & y - yChange 0)yChange+;else yChange-;return count ;16. 线程运行代码/判断是否有时间限制if(maxTime 0) while(true) if (isBlack) blackTime- ;if (blackTime = 0)JOptionPane.showMessageDialog(this,黑方超时,游戏结束!);canPlay = false ;blackMessage = 时间已用完;this.repaint() ;t.suspend() ;else whiteTime- ;if (whiteTime = 0)JOptionPane.showMessageDialog(this,白方超时,游戏结束!);canPlay = false ;whiteMessage = 时间已用完 ;this.repaint() ;t.suspend();blackMessage = blackTime / 3600 + :+ (blackTime /60 -blackTime /3600 * 60) + :+ (blackTime - blackTime / 60 * 60);hiteMessage = whiteTime / 3600 + :+ (whiteTime /60 -whiteTime /3600 * 60) + :+ (whiteTime - whiteTime / 60 * 60);this.repaint() ;try Thread.sleep(1000) ; catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(blackTime + - + whiteTime);public static void main(String args) FiveChessFrame fcf = new FiveChessFrame() ;3.5 测试1.游戏运行界面 2. 开始游戏界面3.关于按钮4.游戏说明按钮5. 游戏结束分出胜负界面6. 游戏设置界面7.认输界面8.落子重复界面9. 游戏退出界面4.总结实训是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 回顾起课程,实训,至今我仍感慨颇多。在这一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论