目录
绪论............................................... 错误!未定义书签。
一、背景与意义..................................... 错误!未定义书签。
二、设计原理与方案................................. 错误!未定义书签。
一)方案....................................... 错误!未定义书签。
二)设计思路................................... 错误!未定义书签。
三)系统分析................................... 错误!未定义书签。
四)程序概要设计............................... 错误!未定义书签。
五)工作流程图................................ 错误!未定义书签。
六)程序框图.................................. 错误!未定义书签。
七)程序中所用类说明.......................... 错误!未定义书签。
八)程序运行效果及存在的问题................... 错误!未定义书签。
三、项目实现....................................... 错误!未定义书签。
一)程序用到的类库简介......................... 错误!未定义书签。
二)游戏主程序设计............................. 错误!未定义书签。
三)主界面PigPanel类......................... 错误!未定义书签。
四)具体实现.................................. 错误!未定义书签。
四、运行结果....................................... 错误!未定义书签。
一)结果截图................................... 错误!未定义书签。
二)系统在调度中经常出现的问题................. 错误!未定义书签。
五、心得........................................... 错误!未定义书签。
六、总结语......................................... 错误!未定义书签。
七、参考文献 (19)
绪论:
面向对象(OOP)的程序设计认为:现实世界是由一组彼此相关并互通信息的实体——对象(Object)组成的。不管是一所学校、一个班级;一辆汽车、一张桌子;还是一个窗体、一个按钮,都可视作对象。一个对象包含两部分内容:描述对象状态的数据和描述对象行为或功能(方法)的编码。数据和编码紧密结合,共同构成一个对象。面向对象的程序设计有三大特性:封装性、继承性和多态性。
计算机技术的应用正在朝着网络化的方向阔步前进,万维网成为世界上最大的信息中心。但目前外围网上的内容仍多为文本、图像、声音等静态信息,Java为其提供了简便并且功能强大的编程接口,开发人员利用这些编程接口可以向Web 增加动态性、交互性内容,这使得Web页面翻开了新的一页。
Java是一种跨平台的面向对象的语言,这就允许开发人员生成独立于平台的应用程序,用Java编写的程序可以在许多硬件平台上运行而不需要重新编译。Java具有很多优点:简单、面向对象、可移植、与硬件无关、强健安全、具有很高的性能,此外还对多线程、动态性提供了支持。
Java采用面向对象技术,所有的Java程序都是对象,通过封装性实现了模块化和信息隐藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。
Java最强大的是网络方面的应用,本课程设计不涉及网络方面的应用。
一、背景与意义
游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。
通过Java程序设计的一些重要理论基础来实现“人机猜拳小游戏”的功能。通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。通过本次程序设计,我掌握了Java语言的基本运用,提高了理论结合实际能力。
二、设计原理及方案
程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。程序使用已创建的PairOfDice类,设计并实现一个类来玩游戏。根据游戏规则玩家将和电脑进行比赛。创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,通过按钮的方式,与电脑进行猜拳游戏,电脑随机出拳并能显示设置的图片,增加美观。
一)方案:
1)界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。
2)系统界面的中间是电脑或者玩家出拳的图片。图片可以生动形象得表示出电脑或者玩家出的拳,显示的图片在对话框中也相得益彰。在图片的下方会显示,人机猜拳以后的输赢。
3)界面的右侧是三个剪刀石头布的按钮。玩家通过按钮出拳,电脑随机出拳,猜拳的输赢结果在下方显示。
二)设计思路:
在设计游戏时,我们要充分考虑到剪刀石头布游戏的特性,以及多种技术的实现:
⑴构造创建服务器端和客户端
⑵创建输入输出流
⑶编写服务器端处理数据的线程方法
⑷绘制游戏界面
⑸绘制界面上的提示
采用此方法设计使程序简洁明了,使绘制游戏界面时简单化,更加易于游戏的实现,程序也更易于读懂。
如java中得到输入输出流的方法:
//调用客户端的getInputStream()方法
Inputs=newBufferedReader(new
InputStreamReader(client.getInputStream()));
通过调用此方法获取从服务器得到的数据
调用客户端的getOutputStream()方法,通过此方法把客户端的数据传输给服务器。
三)系统分析
Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。
线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。
文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。
由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象
的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。
四)程序概要设计
1)功能需求分析
一个剪刀石头布游戏,根据一般的常识,首先要有两个人,两个人同时出,然后,根据双方的出拳,决定谁是赢者,虽然想起来这个游戏很简单,但如何实现,还是有一定难度的。实现这个时针时涉及到几个技术问题:
1.双方如何出拳
2.如何同时出拳
3.如何判断哪方赢了
4.如何显示结果
剪刀石头布游戏,都是通过两个人同时出拳,然后根据双方出的拳,判定哪方是赢家。
2)性能需求分析
准确性:在实现此的过程中,我们要考虑到,双方是否能同时地出拳,还要就是如何去判断,准确地知道哪方是赢家.
简洁性:在实现此的过程中,我们要考虑到,怎样使游戏界面更简单,让人更容易明白它怎样去玩。
五)工作流程图:
图1 工作流程图
六)程序框图
游戏程序框图如图2所示
图2 游戏程序框图
七)程序中所用类说明:
(1)用户自定义类
类名:SmallGame
作用:实例化对象
主要成员变量:
Frame myFrm // 定义主窗体
TextArea myText // 定义文本编辑区
Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮Label Lf Lr, Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单
Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项Toolkit toolKit
Clipboard myCB //剪切板对象 FileDialog myFDlg //定义文件对话框 主要成员方法:
public void init() //初始化各部件菜单的定义和事件的监听 public void displayEdit ()//显示窗体及调用Time 中的schedule 方法 public void windowClosing () //关闭窗体 public void save //保存文件方法 .内部类类名:KeyEvents
作用:实现菜单的事件的响应功能 继承的父类:KeyAdapter 主要成员变量:无
成员方法:actionPerformed()、keyPressed()
(2)用户自定义类与Java 类的继承关系图如下:
图3 子类及其父类继承关系图
(3)类中成员及作用
Service 类成员:
Thread Servic
getInputSt ream
Start Run Random get O utputStrea m
Readline
String data; //接收数据
BufferedReader inputs;// 读取数据
PrintStream outputs;//输出数据
Socket client;//定义套接字
Client类成员:
String data;//接收数据
Socket client = null;//定义套接字
BufferedReader inputs = null;// 读取数据 BufferedReader key = null;// 缓冲数据
PrintStream outputs = null;//输出数据八)程序运行效果及存在的问题
(1)运行效果图
剪刀石头布游戏效果如图4所示:
图4游戏效果图
(2)存在的问题
此游戏界面简洁明了,但还是有许多问题的,比如说这个界面不是GUI 的,所以操作性不强,也不美观,而且处理数据的random函数也有问题,它可能出现相同的结果,不能成为真正意义上的随机,所以这个小游戏还是有许多问题的,我会进一步的改进它。
三、项目实现
一)程序用到的类库简介
(1)Java的抽象窗口工具集AWT(Abstract Window Toolkit)中包含了很多的类来支持GUI的设计,使得用户和程序可以非常方便地进行交互。java.awt包中包含Component、Panel、Frame、Applet、Container、Button等许多常用的类。
(2) Swing类库提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。而javax.swing.event则供 Swing 组件触发的事件使用。
(3)此外,程序还用到了部分applet、net、io、util类。
二)游戏主程序设计
主程序PigPanel用到两个类:Die和PairOfDice,均为已设计类。
Die类主要实现出招过程,PairOfDice过程主要返回游戏规定的得分情况,PigPanel使用这两个类,并产生用户交互界面,由用户操作实现出招、得分、等步骤。
三)主界面PigPanel类
1. 成员变量
restart
Jbutton
对本次游戏数据进行清零
get
JButton
模拟出招
pause
Jbutton
获得当前得分的点数
pod
PairOfDice
声明类以获得分点数2.成员变量
info
String
储存读取的信息
ta
JTextArea
显示文字
四)具体实现
首先建立一个Test类,如下:import java.awt.Color;
import java.awt.Image;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.AbstractButton; import javax.swing.ImageIcon; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JPanel;
public class Test extends JFrame { JLabel jl,jl1;
final JLabel jl2,jl3;
JLabel jl4;
public String person;
public String m;
int j;
int i;
final String[] arr = new String[3];
public void Win(String person) {
arr[0] = "石头";
arr[1] = "剪刀";
arr[2] = "布";
person = arr[j];
i = (int) (Math.random() * 3);
String c = arr[i];
//判断输赢
if (c.equals(person)) {
jl4.setText("平手");
} else if (c.equals("剪刀") && person.equals("石头") || c.equals("石头")&& person.equals("布") || c.equals("布") && person.equals("剪刀")) {
jl4.setText("你赢了");
} else {
jl4.setText("你输了");
}
}
public Test() {
JFrame jf = new JFrame();
this.setSize(400, 300);
this.setTitle("猜拳游戏");
this.setLayout(null);
jl = new JLabel("电脑出的是:");
jl.setBounds(50, 50, 100, 50);
this.add(jl);
jl1 = new JLabel("你出的是:");
jl1.setBounds(50, 120, 100, 50);
this.add(jl1);
// 电脑的出的拳标签
jl2 = new JLabel();
jl2.setBounds(150, 50, 100, 50);
this.add(jl2);
//我出的拳的标签
jl3 = new JLabel();
jl3.setBounds(150, 120, 100, 60);
this.add(jl3);
jl4 = new JLabel("");
jl4.setBounds(150, 200, 100, 50);
this.add(jl4);
// 按钮
final JButton btn = new JButton("石头"); btn.setBounds(280, 50, 60, 40);
this.add(btn);
final JButton btn1 = new JButton("剪刀"); btn1.setBounds(280, 105, 60, 40);
this.add(btn1);
final JButton btn2 = new JButton("布"); btn2.setBounds(280, 160, 60, 40);
this.add(btn2);
//按钮事件监听
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//如果你鼠标点击的是石头按钮
j = 0;
String b = btn.getActionCommand();
jl3.setText(b);
jl3.setIcon(new ImageIcon(MyImg.class.getResource(j+".jpg")));
Win(person);
Test.this.jl2.setIcon(new ImageIcon(MyImg.class.getResource (i+".jpg")));
Test.this.jl2.setText(arr[i]);
System.out.println(arr[i]);
}
});
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
j = 1;
String b1 = btn1.getActionCommand();
jl3.setText(b1);
jl3.setIcon(new ImageIcon(MyImg.class.getResource(j+".jpg")));
Win(person);
Test.this.jl2.setIcon(new ImageIcon(MyImg.class.getResource (i+".jpg")));
Test.this.jl2.setText(arr[i]);
System.out.println(arr[i]);
// System.out.println(b);
}
});
btn2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
j = 2;
String b2 = btn2.getActionCommand();
jl3.setText(b2);
jl3.setIcon(new ImageIcon(MyImg.class.getResource(j+".jpg")));
Win(person);
Test.this.jl2.setText(arr[i]);
System.out.println(arr[i]);
Test.this.jl2.setIcon(new ImageIcon(MyImg.class.getResource (i+".jpg")));
// System.out.println(b);
}
});
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setResizable(false);
}
public static void main(String[] args) {
Test t = new Test();
}
}
再建立一个名为MyImg的类,把下面几张图片放到该类下
图片名称自左向右依次为布、石头、剪刀。
四、运行结果
一)结果截图
图5 开始界面
图6 游戏过程
图7 游戏过程
图8 游戏过程二)系统在调度中经常出现的问题
(1)数据库的连接容易出错
(2)各种数据写入数据库时容易出错(3)在调度中经常出现数词不匹配
五、心得
个人分析:
程序从最初的黑盒子运行到后来的可视化,经过了一段“设计的思考”:如何把游戏表现出来、如何让用户最快上手、如何完善游戏。这属于需求分析的范畴。在设计中不断体会系统的需求分析需求满足的重要,才会做出好的程序。
在程序实现的过程中,遇到的困难也不少。不提编写的小错误,有所学的知识不够用的尴尬,有用户界面的多媒体实现的难处,不一而足。于是我通过不断的学习和纠正错误,得到了最后的源程序。
后来是课程设计,并且要做好各个环节的分析,用语言表达出来。这相当有难度。也许在此之前已经把程序脱个精光,但是要把各个环节拆开并且详细描述就仿佛要把程序继续脱。当然最终是“脱”出来了,也许还不尽如人意,但已能大致表达程序设计的思想了。
虽然提交时间推延到了最后,但是我仍然感觉时间相对紧张(思想紧张?),所以难免出现不足之处,有可完善的,也有个人能力之外的。已知的列举如下:1.出招过程未能表现;
2.没有开始菜单以及结束菜单;
3.不能由键盘控制;
4.在最大化窗口后出现部分界面不能显示;
5.界面还可更加完善;
6.应更多学习成熟游戏的优点,改善游戏环境;
7.编程还未能做到完全模块化,这是在课程设计中发现的;
六、总结语:
作为率先推广面向对象思想的语言,java却不是革命性的东西,所有现有的 java 的思想都是继承自其他的语言和技术,没有什么革命的地方。但是 java 在真正推动面向对象编程思想方面是功不可没的。使用 java 编程,你无需考虑到向后兼容什么语言的问题,它是重新建立的语言,你在掌握这门语言之前,你必须将自己的编程思想由过程编程彻底转向面向对象编程,因为每个 java 程序,本身就是一个类,你编写任何 java 程序,你都不自觉的在构造一个对象模板,没有第二条道路,只能是面向对象编程。
相对于另一门面向对象的语言C++而言,java 在面向对象的贯彻方面要比C++ 彻底。有人说“C++ 是打着面向对象的幌子,干着过程编程的勾当”或许不是言过其辞,C++继承了C的面向过程的一些特性,而java几乎都用了面向对象的思想来实现程序。但是无论是 c++ 还是 java 都有可能走过程编程的老路,java 降低的过程编写的可能性,但是如果你没有具备面向对象的编程思想,你还是可能走面向过程的老路的。
程序中生成了几个对象,均为较简单的对象,而却难免会步入面向过程的老路,但这看似是却是难免的:实现游戏规则,就要把过程写出来。
理解课程设计如果想要做好,绝不是一朝一夕的事。
本次毕业设计的每一个阶段:系统分析、总体设计、编码实现、调试与测试,都是我在不断学习的情况下完成的。而在这些过程中不断体会软件设计的各个步骤、各个环节,又转到不断学习中去。
java的学习是要不断把所学和所用结合的,一次课程设计可以体会到知识的不足,而后补充所需的知识,再进行实践,再发现不足,如此不断,才能慢慢体会这门语言的精髓。
是故,本次课程设计带给我的不仅仅是为未来打基础这么简单的收获,更多的是一种认识。小至一门课程、一门语言,大至一门专业、一段人生,若不是热情主动刻苦地学习,将一无所获。
七、参考文献
JAVA开发实战宝典--------编著:李钟蔚出版社:清华大学出版社JAVA面向对象编程--------编著:孙卫琴出版社:电子工业出版社
Java 程序设计 人机猜拳小游戏 实 验 报 告 专业:计算机科学与技术专业 班级: 学号: 姓名: 指导老师:
摘要 面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。 作为一种新的的编程语言,Java很大程度推广了面向对象的思想。随着计算机技术的发展,Java的强大展现出它不可替代的作用。Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。 本文针对Java 的具体应用,设计了一个小游戏。根据游戏的规则,用户将可以和计算机进行简单对战。程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。 关键字:JAVA GUI 游戏 ABSTRACT The Object-Oriented Method is a method which apllies the Object-Oriented Design to the process of the software exploiture and directs the ploy of development. It extracts the prime of the Structured Design for Computer Programmers, deals matters with a folksy fashion, which is considered to be a grand new software-develop technique. As a new programming language, Java spread the Object-Oriented Design in a certain degree. With the development of the technique of computer, the insurmountable function of JA V A is exhibited for its’ mightines s. Not only applies in network, JA V A also can fulfill the requirement of the Application-Design and Game-Design. In this paper, to use the idiographic application of JA V A , I design a game called . Following the regular of the game, user can play a simple revalry with computer. This programme actualizes a folksy GUI mode, which will make user master game easily. Keywords: JA V A GUI Game
//Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; /* *main方法创建了ChessFrame类的一个实例对象(cf), *并启动屏幕显示显示该实例对象。 **/ public class FiveChessAppletDemo { public static void main(String args[]){ ChessFrame cf = new ChessFrame(); cf.show(); } } /* *类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/ class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"}; private String[] strmode={"人机对弈","人人对弈"}; public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; //构造五子棋游戏的主窗体 public ChessFrame() { this.setTitle("五子棋游戏"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent()); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戏");
这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。 下面的代码会实现一个猜拳游戏,让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。 代码实现: #include
} srand((unsigned)time(NULL)); // 随机数种子 computer=rand()%3; // 产生随机数并取余,得到电脑出拳 result=(int)gamer+computer; // gamer 为char 类型,数学运算时要强制转换类型 printf("电脑出了"); switch (computer) { case 0:printf("剪刀\n");break; //4 1 case 1:printf("石头\n");break; //7 2 case 2:printf("布\n");break; //10 3 } printf("你出了"); switch (gamer) { case 4:printf("剪刀\n");break; case 7:printf("石头\n");break; case 10:printf("布\n");break; } if (result==6||result==7||result==11) printf("你赢了!"); else if (result==5||result==9||result==10) printf("电脑赢了!"); else printf("平手"); system("pause>nul&&cls"); // 暂停并清屏 } return 0; } 代码分析 1) 首先,我们需要定义3个变量来储存玩家出的拳头(gamer)、电脑出的拳头(computer)和最后的结果(result),然后给出文字提示,让玩家出拳。 接下来接收玩家输入: scanf("%c%*c",&gamer); 注意:由于每次输入以回车结束,缓冲区中除了玩家输入的字母,还有回车符。回车符要跳过,以免影响下次输入。Scanf() 函数的格式控制字符串个数可以多于参数个数,scanf("%c%*c",&gamer);的作用是从缓冲区多输出一个字符(回车符),却不赋给任何变量。 玩家输入结束,使用switch 语句判断输入内容,65(A)、97(a)、66(B)、98(b)、67(C)、99(c)、68(D)、100(d)为相应字符的ASCII码。 注意:system("cls"); 语句的作用是清屏。System() 函数用来执行dos 命令,这里相当于在dos 里输入cls命令。 2) 玩家出拳结束,电脑开始出拳。
Java程序设计实验报告 班级:11060341X 学号:50 姓名:马一桃 实验题目:猜拳小游戏 实验要求: 用java编写一个人机对战的猜拳小游戏。人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。有简单的操作界面。 实验内容: 1、问题分析过程: 人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现。电脑则随机性出拳,由电脑产生随即数来实现。 通过游戏规则判断双方的输赢,显示当局的输赢情况,并记录当局的分数,并各方的输赢情况。游戏结束时显示双方的分数以及输赢情况。 面向的对象有人、电脑以及游戏规则。人、电脑都有实现自己出拳的方法,同时还要有判断各方输赢的方法。 2、主要实现代码:(要求有必要的注释): import java.util.Scanner; //通过import语句引入Scanner类 public class Game{ public static void main(String args[]){ int x=0; //用户的初始分数为0 int y=0; //电脑的初始分数为0 int z=0; //开始时决战次数为0 System.out.println("\n"); System.out.println("猜拳游戏现在开始,准备好了吗?"); System.out.println("===========游戏规则==========="); System.out.println(" 胜利加一分,否则不加分 "); System.out.println(" 当游戏结束时分高者为胜 "); System.out.println("=============================="); Scanner shuzi = new Scanner(System.in); //用户通过键盘输入 System.out.println("是否要开始游戏?"+"\n"+" y/n"); String m = shuzi.next(); while(m.equals("y")) { System.out.println("请选择数字出拳:"); System.out.println("1 石头 2 剪刀 3 布"); int A = shuzi.nextInt(); //利用switch语句,用户实现出拳 switch(A){ case 1:
连连看java源代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class lianliankan implements ActionListener { JFrame mainFrame; //主面板 Container thisContainer; JPanel centerPanel,southPanel,northPanel; //子面板 JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组 JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮 JLabel fractionLable=new JLabel("0"); //分数标签 JButton firstButton,secondButton; //分别记录两次被选中的按钮 int grid[][] = new int[8][7];//储存游戏按钮位置 static boolean pressInformation=false; //判断是否有按钮被选中 int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制 public void init(){ mainFrame=new JFrame("JKJ连连看"); thisContainer = mainFrame.getContentPane(); thisContainer.setLayout(new BorderLayout()); centerPanel=new JPanel(); southPanel=new JPanel(); northPanel=new JPanel(); thisContainer.add(centerPanel,"Center"); thisContainer.add(southPanel,"South"); thisContainer.add(northPanel,"North"); centerPanel.setLayout(new GridLayout(6,5)); for(int cols = 0;cols < 6;cols++){ for(int rows = 0;rows < 5;rows++ ){ diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this); centerPanel.add(diamondsButton[cols][rows]); } } exitButton=new JButton("退出"); exitButton.addActionListener(this); resetButton=new JButton("重列"); resetButton.addActionListener(this); newlyButton=new JButton("再来一局"); newlyButton.addActionListener(this); southPanel.add(exitButton);
幼儿园中班游戏教案:猜拳游戏 Game teaching plan of kindergarten middle class: guessing fist game
幼儿园中班游戏教案:猜拳游戏 前言:本文档根据题材书写内容要求展开,具有实践指导意义,适用于组织或个人。便于学习和使用,本文档下载后内容可按需编辑修改及打印。 目标: 1.观察游戏卡片上的图案,理解游戏中"石头、剪子、布"相互克制的关系。 2.在翻动、覆盖、叠加卡片的过程中提高判断能力和手 眼协调能力。 准备: 1.自制16宫格游戏底板一块。 2.用KT板自制的并用透明胶包起来的"石头、剪子、布"单面图案卡片各5张,另外增加1张"石头"卡片,一共16 张游戏卡片,所有游戏卡片的背面为白底。 3.每张游戏卡片的大小与游戏底板16宫格的格子大小一致。 玩法:
1.两名幼儿游戏。游戏前,幼儿共同把"石头、剪子、布"游戏卡片打乱,然后将其图案朝下,任意覆盖在16宫格游戏底板上。 2.游戏时,一名幼儿先选择翻开任意一张游戏卡片,另一名幼儿也选择翻开一张游戏卡片,随后,幼儿要快速判断自己所翻的游戏卡片能否克制对方翻开的游戏卡片。如果能够克制,则可以把自己的卡片叠放在对方的卡片上,覆盖住它的图案,比如"石头"可以覆盖"剪子","剪子"可以覆盖"布","布"可以覆盖"石头"。如果两张卡片不能形成互相克制的关系,则保持原有的翻开状态。 3.两名幼儿依次轮流游戏,幼儿每翻开一张卡片,都要观察和判断自己的卡片能否将游戏底板上翻开的任意一张卡片克制住。如果能克制住,则马上进行叠加,即覆盖在那张或那叠卡片上;如果没有能克制住的对象,就让卡片继续保持翻开状态。 4.当游戏底板上的卡片被全部翻完时,游戏双方就用猜拳方法来决定每次谁先行动。每次猜拳获胜者可以选择将游戏底板上任意一组形成相互克制关系的卡片叠加在一起。 5.当游戏底板上没有相互克制的卡片时,游戏结束。
j a v a小游戏源代码 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT
Java小游戏 第一个Java文件: import class GameA_B { public static void main(String[] args) { Scanner reader=new Scanner; int area; "Game Start…………Please enter the area:(1-9)" + '\n'+"1,2,3 means easy"+'\n'+"4,5,6 means middle"+'\n'+ "7,8,9 means hard"+'\n'+"Please choose:"); area=(); switch((area-1)/3) { case 0:"You choose easy! ");break; case 1:"You choose middle! ");break; case 2:"You choose hard! ");break; } "Good Luck!"); GameProcess game1=new GameProcess(area); (); } } 第二个Java文件: import class GameProcess { int area,i,arrcount,right,midright,t; int base[]=new int[arrcount],userNum[]=new int[area],sysNum[]=new int[area]; Random random=new Random(); Scanner reader=new Scanner; GameProcess(int a) { area=a; arrcount=10; right=0; midright=0; t=0; base=new int[arrcount]; userNum=new int[area]; sysNum=new int[area]; for(int i=0;i 吉林省经济管理干部学院 吉林经济职业技术学院 2013-2014学年第一学期 课程设计 项目类别:游戏设计 设计题目:猜拳小游戏 班级: 学号: 姓名: 校内教师: 企业教师: 设计日期:2013年12月9 日——2013年12月20日 一、设计目标 首先是JAVA语言的初级编程。其次JAVA语言的猜拳小游戏的编程及设计。有JAVA平台软件eclipse的使用。并且使用软件eclipse对猜拳小游戏进行编程,设计游戏算法,实现游戏功能。 二、目标描述 程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。程序使用已创建的类,设计并实现一个类来玩游戏。根据游戏规则玩家将和电脑进行比赛。 在这个课程设计中,我们做成了一个人机猜拳的小游戏。游戏与我们平时玩的“剪刀、石头、布”是一样的玩法,只不过是玩家与电脑进行猜拳,并且电脑是随机出拳的。 三、设计过程 总体设计 3.1 程序主要功能: 程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。 程序使用已创建的PairOfDice类,设计并实现一个类来玩游戏。根据游戏规则玩家将和电脑进行比赛。 3.2本程序设计有一下几点设计要求: 1)用可视化编程控件实现该程序。 2)人和电脑对战,你输入石头或剪子或布后,电脑会说“你赢了”,“你输了”或“平”。 3)在游戏结束时,要显示你赢了多少局,电脑赢了多少局,你们平了多少局 3.3 用户动作事件描述: 1)进行游戏 2)清零 3)对本次游戏的用户和电脑数据进行清零,即重新开始游戏。 3.4程序中所用类说明 用户自定义类 类名:SmallGame 作用:实例化对象 主要成员变量: a.Frame myFrm // 定义主窗体 b.TextArea myText // 定义文本编辑区 c.Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮 https://www.wendangku.net/doc/bd3327280.html,bel Lf Lr, Ls //定义和创建各标签 e.MenuBar Mbbar //定义和创建主菜单 f.Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项 g.Toolkit toolKit 扫雷游戏Java源代码 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane(); 南华大学计算机科学与技术学院实验报告 (2013 ~ 2014 学年度第一学期) 面向对象程序设 课程名称 实验名称人机猜拳游戏 姓名唐龙学号20139350106 专业船山软件班级13级1班 地点8—410 教师夏石莹 一、实验目的 本课程设计所要求达到的目的:通过Java程序设计的一些重要理论基础来实现“人机猜拳小游戏”的功能。通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。 二、实验设计与要求 问题定义:创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,并能显示设置的图片,增加美观。 研究意义:通过本次程序设计,我掌握了Java语言的基本运用,提高了理论结合实际能力。 设计要求: 1)界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。 2)系统界面的中间是电脑或者玩家出拳的图片。图片可以生动形象得表示出电脑或 者玩家出的拳,显示的图片在对话框中也相得益彰。在图片的下方会显示,人机 猜拳以后的输赢。 3)界面的右侧是三个剪刀石头布的按钮。玩家通过按钮出拳,电脑随机出拳,猜拳 的输赢结果在下方显示。 三、系统的主要功能 1.可以通过按钮的方式,与电脑进行猜拳游戏,电脑随机出拳; 2.可以显示出拳图片。 四、实验工具 Windows 7;jdk1.6.0_21;eclipse 五、项目实现 首先建立一个Test类,如下: import java.awt.Color; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Test extends JFrame { JLabel jl,jl1; final JLabel jl2,jl3; JLabel jl4; public String person; public String m; int j; int i; final String[] arr = new String[3]; public void Win(String person) { arr[0] = "石头"; arr[1] = "剪刀"; arr[2] = "布"; person = arr[j]; i = (int) (Math.random() * 3); String c = arr[i]; //判断输赢 if (c.equals(person)) { jl4.setText("平手"); } else if (c.equals("剪刀") && person.equals("石头") || c.equals("石头")&& person.equals("布") || c.equals("布") && person.equals("剪刀")) { jl4.setText("你赢了"); } else { jl4.setText("你输了"); } } 目录 绪论............................................... 错误!未定义书签。 一、背景与意义..................................... 错误!未定义书签。 二、设计原理与方案................................. 错误!未定义书签。 一)方案....................................... 错误!未定义书签。 二)设计思路................................... 错误!未定义书签。 三)系统分析................................... 错误!未定义书签。 四)程序概要设计............................... 错误!未定义书签。 五)工作流程图................................ 错误!未定义书签。 六)程序框图.................................. 错误!未定义书签。 七)程序中所用类说明.......................... 错误!未定义书签。 八)程序运行效果及存在的问题................... 错误!未定义书签。 三、项目实现....................................... 错误!未定义书签。 一)程序用到的类库简介......................... 错误!未定义书签。 二)游戏主程序设计............................. 错误!未定义书签。 三)主界面PigPanel类......................... 错误!未定义书签。 四)具体实现.................................. 错误!未定义书签。 四、运行结果....................................... 错误!未定义书签。 一)结果截图................................... 错误!未定义书签。 二)系统在调度中经常出现的问题................. 错误!未定义书签。 五、心得........................................... 错误!未定义书签。 六、总结语......................................... 错误!未定义书签。 七、参考文献 (19) **** 届毕业设计Java小游戏俄罗斯方块 ┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 摘要 在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。 俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型。 论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。 此次设计在Microsoft Windows 7系统下,以Java为开发语言,在eclipse开发平台上进行游戏的设计与实践。从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我在设计中在一个图片框中构造了一些的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个欲览窗体中提前展示形状供用户参考,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,最后就可以得出用户的分数。 关键词:游戏设计,算法,数组,事件 //JAVA人机猜拳小游戏代码 import java.util.Scanner; public class guess{ public static void main(String[] args){ Scanner in=new Scanner(System.in); System.out.println("-----猜拳游戏-------"); System.out.println("请出拳(1.剪刀2.石头3.布)"); int person=in.nextInt(); int computer=(int)(Math.random()*3)+1; String Marks="拳头";//这是给人做一个标记; String Marks2="拳头";//这是给电脑做一个标记; switch(person){ case 1: Marks="拳头"; break; case 2: Marks="石头"; break; case 3: Marks="布"; break; } switch(computer){ case 1: Marks2="拳头"; break; case 2: Marks2="石头"; break; case 3: Marks2="布"; break; } if(person==computer){ System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"---平局"); }else if(person==1&&computer==2||person==2&&computer==3||person==3&&computer= =1){ System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"—_—你输了!"); }else{ System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"^_^你赢了!"); } } Java小游戏 第一个Java文件: import public class GameA_B { public static void main(String[] args) { Scanner reader=new Scanner; int area; "Game Start…………Please enter the area:(1-9)" + '\n'+"1,2,3 means easy"+'\n'+"4,5,6 means middle"+'\n'+ "7,8,9 means hard"+'\n'+"Please choose:"); a rea=(); s witch((area-1)/3) { c ase 0:"You choose easy! ");break; c ase 1:"You choose middle! ");break; c ase 2:"You choose hard! ");break; } "Good Luck!"); G ameProcess game1=new GameProcess(area); (); } } 第二个Java文件: import import public class GameProcess { int area,i,arrcount,right,midright,t; int base[]=new int[arrcount],userNum[]=new int[area],sysNum[]=new int[area]; Random random=new Random(); Scanner reader=new Scanner; GameProcess(int a) { area=a; arrcount=10; right=0; midright=0; t=0; base=new int[arrcount]; userNum=new int[area]; sysNum=new int[area]; for(int i=0;i J a v a程序设计项目 1.项目背景 为了提高学生动手能力,增加学生实践的机会,某软件公司实习单位要求学生5-6人组成开发团队进行Java程序项目开发,参考自己团队的实力与客户的要求,使用Java语言开发某一项目,此项目可以是应用程序,也可以是游戏开发等,项目名称自拟。 2.硬件资源和软件资源 (1)每组配备联网PC台,智能手机一部(带有手机数据 线)HP打印机一台。 (2)eclipse-SDK-3.6.1-win32软件开发程序(含有eclipseme插件)、SUNWTK 无线开发包或Symbian_3_SDK_v0_9等手机开发包。 3.实验室功能需求 (1)实现学生机和教师机器(服务器)进行通信,相互共享资源。 (2)教师机器(服务器)上安装一台打印机,实现学生机可以共享打印。 (3)实现教师机器(服务器)连接和访问Internet。 (4)实现每一台学生机器访问Internet。 (5)要求为每一项目组学生机和教师机器分配一个标识,即学生机器的机器名为ST1~ST10,教师机器名为Server。 4.项目实施要求 (1)要求各项目小组拿出详细的某某Java程序设计项目报告书(具体项目规划书格式参考附表一),关键步骤要有相应的截图。 (2)要求项目组长向各小组讲解与演示自己小组的项目成果,组长小组成员要熟练的解释与分析自己负责编写的Java代码或项目分工成果。 (3)最后提交用小组命名的文件夹,其中包括开发所用的所有资料与项目成果。 附表一: 雷霆战机项目报告书 一、项目概述 本项目为一个Java游戏,是一个基于J2ME平台的飞机射击类游戏。 二、项目开发团队 三、所用Java相关知识点 第一个文件: public class Computer { String name; int score; public int showfist(){ int quan; quan=(int)(Math.random()*10); if(quan<=2){ quan=1; }else if(quan<=5){ quan=2; }else{ quan=3; } switch(quan){ case 1:System.out.println(name+"出拳:剪刀");break; case 2:System.out.println(name+"出拳:石头");break; case 3:System.out.println(name+"出拳:布");break; } return quan; } } 第二个文件: import java.util.Scanner; public class Game { int count=0; int countP=0; Person person=new Person(); Computer computer=new Computer(); Scanner input=new Scanner(System.in); public void initial(){ System.out.print("请选择你的角色(1.刘备 2.孙权 3.曹操):"); int juese=input.nextInt(); switch(juese){ case 1:https://www.wendangku.net/doc/bd3327280.html,="刘备"; break; case 2:https://www.wendangku.net/doc/bd3327280.html,="孙权"; break; case 3:https://www.wendangku.net/doc/bd3327280.html,="曹操"; break; } System.out.print("请选择对手角色(1.关羽 2.张飞 3.赵云):"); 先建立个Game 包然后我做的就是分了 5 个类来做的TestStartGuess 类package com、game、guess; public class TestStartGuess { /** * 人机互动版猜拳游戏 * 程序入口 */ public static void main(String[] args) { Game game=new Game(); game、initial(); game、startGame(); } } 2、Person 类 package com、game、guess; import java 、util 、Scanner; /** * 用户类 *阶段1 完成 * @param 帮朋友写的迷宫小游戏程序java //作者:LaoCooon import java.awt.Graphics; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.event.*; import javax.swing.*; import java.awt.*; class mMaze extends Frame { Color redColor; Random Random=new Random(); int mapI=Random.getRandom(); MapArray MapArray=new MapArray(); int[] map = MapArray.getMapArray(mapI); static ImageIcon wall= new ImageIcon("wall.jpg"); final ImageIcon tortoise= new ImageIcon("tortoise.gif"); int xl=0,yl=1,speed=30; int x=0,y=1; public mMaze(){addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ if(e.getKeyCode()== KeyEvent.VK_UP){ System.out.println("\n Go Up"); if(map[(yl-1)*29+xl]!=1) yl-=1; } else if(e.getKeyCode()== KeyEvent.VK_DOWN){ System.out.println("\n Go Down"); if(map[(yl+1)*29+xl]!=1) yl+=1; } else if(e.getKeyCode()== KeyEvent.VK_LEFT){ System.out.println("\n Go Left"); if(map[yl*29+(xl-1)]!=1) xl-=1; } else if(e.getKeyCode()== KeyEvent.VK_RIGHT){ System.out.println("\n Go Right"); if(map[yl*29+(xl+1)]!=1) xl+=1; } else System.out.println(e.getKeyChar()); if(y==27&&x==28) System.out.println("\n You Win~!"); repaint(); } } ); setSize(890,910); setVisible(true); setLocation(400,200); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ dispose(); System.exit(0); } } ); } public void paint(Graphics g){ g.drawImage(tortoise.getImage(), xl*speed+8, yl*speed+30, null); int i=0,j=0; for ( i = 0; i < 29; i++) for(j=0;j<29;j++) if(map[i*29+j]==1) g.drawImage(wall.getImage(), j*30+8, i*30+30, null); } } public class Maze{ public static void main(String[] args){ new mMaze(); }} 回复 ?2楼 ?2013-05-16 10:34《猜拳小游戏》课程设计报告
扫雷游戏Java源代码
人机猜拳小游戏
(完整word版)基于Java的猜拳小游戏设计
Java小游戏俄罗斯方块附完整源代码_毕业设计
JAVA人机猜拳小游戏代码
java小游戏源代码
Java游戏开发项目及游戏源码
Java猜拳小游戏源代码
人机猜拳思路
java迷宫小游戏源代码