基于JAVA的剪刀石头布游戏设计——Java课程设计报告_
Java 石头剪子布游戏

package meng;import java.awt.Color;import java.awt.Font;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;public class abc extends JFrame implements ActionListener {JPanel panel; //panel面板JButton toneButton; //石头按钮JButton jianButton; //剪刀按钮JButton buButton; //布按钮JButton clearButton; //清除按钮JLabel label; //显示分数标签JTextArea textArea; //显示结果文本区int win=0; //赢了int fail=0; //输了int ping=0; //平了int grade=0; //分数计数int i=1; //1表示剪刀,2标示石头,3表示布String[] set=new String[]{null,"剪刀","石头","布"}; //存放剪刀石头布String result=" "; //显示分数的字符串public abc() //构造函数{//实例化各个控件和设置各个控件的在面板里的位置panel=new JPanel();panel.setLayout(null);panel.setBackground(Color.yellow);textArea=new JTextArea();textArea.setBounds(new Rectangle(0,50,400,100));textArea.setEditable(false);textArea.setBackground(Color.yellow);textArea.setFont(new Font("宋体",Font.BOLD,30));toneButton=new JButton("石头");toneButton.setBounds(new Rectangle(0,0,100,50)); jianButton=new JButton("剪刀");jianButton.setBounds(new Rectangle(100,0,100,50)); buButton=new JButton("布");buButton.setBounds(new Rectangle(200,0,100,50)); clearButton=new JButton("清空");clearButton.setBounds(new Rectangle(300,0,100,50));buButton.setBackground(Color.green); jianButton.setBackground(Color.green); toneButton.setBackground(Color.green); clearButton.setBackground(Color.green);label=new JLabel(result);label.setBounds(new Rectangle(0,150,300,60));//实现按钮监听toneButton.addActionListener(this);jianButton.addActionListener(this);buButton.addActionListener(this);clearButton.addActionListener(this);//向panel面板添加各个控件panel.add(textArea);panel.add(toneButton);panel.add(jianButton);panel.add(buButton);panel.add(clearButton);panel.add(label);//将面板panel添加到JFrame里add(panel);setBounds(490,280,400,250);setVisible(true);setTitle("张三");setDefaultCloseOperation(3);}public static void main(String[] args) //主方法{abc p=new abc();}public void actionPerformed(ActionEvent e) //实现按钮的单击事件{if(e.getSource()==toneButton) //单击石头按钮{i=2;computeResult();}if(e.getSource()==jianButton){i=1;computeResult();}if(e.getSource()==buButton){i=3;computeResult();}if(e.getSource()==clearButton){win=0;fail=0;ping=0;grade=0;textArea.setText("");label.setText("");// setResult();}}public void computeResult() //计算你出拳和电脑出拳的结果{int j=(int)(Math.random()*3+1); //电脑随机产生数字1,2,3 String comStr=null; //保存计算机出的拳String playStr=null; //保存玩家出的拳for(int a=1;a<set.length;a++){if(a==j){comStr=set[a];}if(a==i){playStr=set[a];}}if(i-j==-2||i-j==1) //玩家赢得时候{win++;grade++;textArea.setText("你出:"+playStr+"\n电脑出:"+comStr+"\n结果:你赢了");setResult();}else if(i-j==0) //电脑和玩家打平的时候{ping++;textArea.setText("你出:"+playStr+"\n电脑出:"+comStr+"\n结果:平局");setResult();}else //电脑获胜或你输了的时候{fail++;textArea.setText("你出:"+playStr+"\n电脑出:"+comStr+"\n结果:你输了");setResult();}}public void setResult() //用与更新分数标签的结果{result=" 分数: 赢: "+ win + " 平: "+ ping + " 输: "+ fail + " 得分: "+grade;label.setText(result);}}。
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游戏—石头剪刀布

public void actionPerformed(ActionEvent e){
random=new Random();
int i=random.nextInt(3);
if(e.getActionCommand()=="石头"){
if(result[i].equals(result[0])){
Jta.append("\n\n现在比分是: 您: "+s1+"许仕永: "+s2);
}
if(result[i].equals("布")){
Jta.setText("");
String s1=String.valueOf(myguess);
String s2=String.valueOf(cupguess);
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
public class Shi_T implements ActionListener{
JFrame frame;
//b5.addActionListener(this);
cp.add(p1,BorderLayout.CENTER);
cp.add(p2,BorderLayout.SOUTH);
frame.setVisible(true);
frame.setSize(400,300);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
剪刀石头布课程设计

剪刀石头布 课程设计一、课程目标知识目标:1. 学生能理解“剪刀石头布”游戏中所涉及的简单概率计算原理,掌握基本的概率概念。
2. 学生能够运用图表和计算方法,分析并预测“剪刀石头布”游戏的结果。
3. 学生能结合日常生活实例,理解数学在生活中的应用,认识到数学与生活密切相关。
技能目标:1. 培养学生运用数学知识解决实际问题的能力,通过“剪刀石头布”游戏,提高学生的观察、分析、计算和逻辑推理能力。
2. 培养学生进行小组合作、讨论交流的能力,提高学生的表达和沟通技巧。
情感态度价值观目标:1. 学生在轻松愉快的游戏氛围中,体验数学学习的乐趣,激发学习数学的兴趣。
2. 培养学生面对问题勇于尝试、积极思考的态度,增强学生的自信心和自主学习能力。
3. 学生通过合作交流,培养团队精神,学会尊重他人,提高人际交往能力。
课程性质:本课程以趣味游戏为载体,结合数学知识,注重培养学生的实践操作能力和团队合作精神。
学生特点:针对小学四年级学生,好奇心强,活泼好动,喜欢游戏,但注意力集中时间较短。
教学要求:教师需结合学生特点,采用生动有趣的教学方法,引导学生积极参与,注重培养学生的动手操作能力和实际应用能力。
在教学过程中,关注学生的学习反馈,及时调整教学策略,确保学生达到预设的课程目标。
通过本课程的学习,使学生能够将所学知识内化为具体的学习成果,为后续的数学学习奠定基础。
二、教学内容本课程以小学四年级数学教材中“可能性”单元为依据,结合“剪刀石头布”游戏,组织以下教学内容:1. 游戏导入:介绍“剪刀石头布”游戏,引导学生发现游戏中存在的可能性问题。
2. 概率基础:讲解概率的基本概念,如必然事件、不可能事件、随机事件等。
3. 游戏分析与计算:a. 分析“剪刀石头布”游戏中各事件的可能性,如胜利、平局、失败等。
b. 引导学生运用图表和计算方法,预测游戏结果。
4. 实践操作:组织学生进行小组合作,进行“剪刀石头布”游戏实践,记录结果并进行分析。
制作编程游戏《石头剪刀布》

龙源期刊网 制作编程游戏《石头剪刀布》作者:来源:《电脑报》2018年第24期这是编程游戏《石头剪刀布》的效果图,当你用鼠标点击屏幕左上方的石头、剪刀或者布任意一个图案,它下方左侧便会出现对应的大图案,同时,屏幕右侧也会随机出现石头剪刀布任意一个图案,并且判断出和玩家的输赢关系:即石头赢剪刀、剪刀赢布、布赢石头。
这是玩家的具体程序。
当用鼠标点击屏幕左上方的石头、剪刀或布时,它们分别做一个广播,当接收到这个广播时,玩家经过6次造型变化,最后会出现对应的石头、剪刀或布的造型。
这是计算机的具体程序,它接到广播后,会随机出现一个石头、剪刀或布的造型,然后再根据玩家的造型作出输、赢或平局的判断。
这个程序很简单,大家可以尝试做个类似的编程游戏,比如棒子打老虎、虎吃鸡、鸡吃虫、虫吃棒子等等。
数橙在线编程S1全五章上线Scratch融合卡通、动画、音效等多媒体的运用和直观拖曳式的编程方式,生动有趣,可以编写各种类型程序,游戏、动画、互动美术、实物模拟、数学模拟等,想象无限。
经过系统学习,编程班的孩子的逻辑思维能力将远远超过一般的同年龄孩子,是小学、初中老师展开编程教学的重要课程。
S1全五章定位入门初级少儿编程,S1-S4能帮助孩子建立起基础体系化的编程思维,再进行階梯晋级。
1.登录电脑报官方数橙网站:http:///lesson;2.在录播课选择S1(全五章),打包价490元(原价1280元);3. 微信扫码付款后可在线学习,超大内容量逐步掌握编程知识。
学习说明:如果是初级入门的用户,可以选择单个章节购买(价格98元起),然后根据进阶程度购买全章节50课时。
教辅QQ群:524690838。
基于JAVA的剪刀石头布游戏设计Java课程设计报告

基于J A V A的剪刀石头布游戏设计J a v a课程设计报告IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】目录9基于JAVA的剪刀石头布游戏设计摘要:本课程设计使用Java语言,运用包和包及getInputStream()、getOutputStream()等方法,编写出一个能在dos环境中显示出剪刀石头布游戏界面,启动服务器端线程,运行客户端线程,提示玩家出拳,然后,程序把玩家输入的数据传入到服务器端,通过服务器端线程的函数得出结果,然后再把结果传输到界面上。
关键字:方法;网络编程;多线程;输入输出流前言Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Java applet)显示了Java 的魅力:跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web 的迅速发展,常用的浏览器现在均支持Java applet【1】。
在面向对象程序设计中,通过继承可以简化类的定义。
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承【2】。
新类继承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的超类。
派生类可以从它的基类那里继承方法和变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”【3】。
多线程处理一个常见的例子就是用户界面。
利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
石头剪刀布游戏课程设计

课程设计说明书课程名称:高级语言程序设计设计题目:石头剪刀布游戏院部:计算机科学与信息工程学院学生姓名:学号:专业班级:指导教师:2014年6月课程设计任务书目录一前言 (1)二需求分析 (1)三概要设计 (1)四详细设计 (4)五改进或增加功能模块说明 (5)六程序测试 (6)七课程设计总结 (7)八致谢 (7)九参考文献 (8)十源程序 (8)石头剪刀布游戏一前言传统的石头剪刀布游戏只是人和人之间进行的,双方只能一次出剪刀石头布三者之一,游戏的规则是石头>剪刀>布。
现在是人和计算机出拳玩石头剪刀布游戏,规则相同,只不过需要对石头剪刀布进行字母代替,在程序中实现。
最后比较输赢,统计成绩。
二需求分析1 要求(1)用C语言实现程序设计。
(2)定义各个函数分别完成不同功能,如设计,判断等。
(3)画出查询模块的流程图。
(4)界面友好(良好的人机互交),程序要有注释。
2 任务(1)定义各类头文件,变量及宏定义。
(2)设定玩家操作模块和胜负判断模块。
(3)画出部分模块的流程图。
(4)编写代码。
(5)程序分析与调试。
3 运行环境(1)WINDOWS2000/XP系统(2)TurboC2.0编译环境4 开发工具系统描述语言C语言。
三概要设计1 模块组成图含有三个模块,人和电脑的输入,输入的比较计算,输出结果和评价。
图3-1 功能模块图2 电脑随机输入流程图现随机输入剪刀石头布,调用随机函数。
图3-2 功能模块图3 用户输入流程图对用户输入的数据进行判断是否是剪刀石头布或者是结果输出,判断用户的输入是否合法。
图3-3 功能模块图4 计算比较流程图对与用户和电脑输入的数据进行比较,判断用户的成绩,然后退出界面。
图3-4 功能模块图四详细设计在程序的开头部分定义要用到的头文件,以及各种常量如石头剪刀布输出结果等,设定各常量的类型,代码如下。
#include<stdio.h>#include<time.h>#include<stdlib.h>void main(){char ad; //用来存放用户的选择char com; //用来存放电脑的选择int sj,q;float p,y,s,z,f;p=0;y=0;s=0;printf("出锤子输入c\n出剪刀输入j\n出布输入b\n计算您的得分输入f\n可以一次输入许多会一次性出很多结果\n请输入您的选择:\n");输入数据,即为选手每一次下出拳,用三个字母cjb分别表示石头剪刀布,通过游戏规则,判断用户和电脑的输赢。
石头、剪子、布——将游戏引入程序设计

2014-02百花园地初二信息技术教学中,我市采用的是江苏省初中信息技术(选修)课本,主要是进行VB程序设计的教学,让学生通过学习能够掌握VB这门编程语言,学会编写简单的程序,培养一定的编程思想,由于课程时间安排紧凑,在教学中就更要把握好每一节课的时间,充分提高课堂的效率。
在初中信息技术(选修)课本2.2.2中,要通过一个课时的时间,让学生了解、掌握条件语句,这在整个教学过程中都是一个重、难点。
条件语句是VB程序设计中的基本语句之一,其反映的是程序三大基本结构(顺序结构、循环结构和选择结构)中的选择结构,主要用于在程序执行过程中设置给定的条件,并根据给定的条件进行判断,再根据判断的结果来控制程序的流程。
在条件语句设置给定条件时,通常将条件表达式分为关系表达式和逻辑表达式,前者以<、<=、>、>=、=、<>等符号表示条件对象之间的关系,后者以and、or、not来表示条件与条件之间的逻辑关系。
作为一名初二的学生,在数学课堂上已经学习过部分逻辑关系,但由于本身逻辑思维能力的欠缺,以及对程序设计的兴趣不足,结合程序设计语句教学,结果大部分学生在条件设置、程序判断上还存在很多问题。
江苏省初中信息技术课本(选修)第八章第3节中,要求讲授条件语句中的IF语句,该节课程要求让学生在掌握顺序结构的基础上,学习了解选择结构,课本上的概念较多,实践较少,为了让学生更好地掌握IF语句,对程序选择结构能有一个更具体的了解,我将课外游戏的内容引入课堂,尝试调动学生的学习兴趣,提高课堂的效率。
在我以前的条件语句课程设计时,一般先进行情境的创设,如,以“明天爸爸妈妈带一家人前往尚湖公园,只要不下雨(条件)”为例,用“不下雨”这个条件进行判断,明天爸爸妈妈是不是带一家人去公园玩,让学生了解,这个就是条件、这个就是判断,再以“在尚湖公园入口要买票,学生半票,成人全票,老人免票(条件)”为例,重申条件和判断,并提出条件并不一定是2选1,还可以多选1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录前言 (2)1剪刀石头布游戏设计思路阐述 (3)2程序概要设计 (3)2.1功能需求分析 (3)2.2性能需求分析 (3)2.3程序框图 (3)2.4 Java类及自定义类相互继承的层次关系 (4)2.4.1 Java类及自定义类的说明 (4)2.4.2类中成员及作用 (5)2.5 程序运行效果及存在的问题 (5)2.5.1运行效果图 (5)2.5.2存在的问题 (6)3程序详细设计 (6)3.1 包的加载 (6)3.2自定义类创建服务器端和客户端 (6)3.3创建程序线程 (7)4测试运行 (9)5源代码清单 (10)6总结 (13)7致谢 (13)参考文献 (13)基于JAVA的剪刀石头布游戏设计摘要:本课程设计使用Java语言,运用 java.io包和包及getInputStream()、getOutputStream()等方法,编写出一个能在dos环境中显示出剪刀石头布游戏界面,启动服务器端线程,运行客户端线程,提示玩家出拳,然后,程序把玩家输入的数据传入到服务器端,通过服务器端线程的函数得出结果,然后再把结果传输到界面上。
关键字:方法;网络编程;多线程;输入输出流前言Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet【1】。
在面向对象程序设计中,通过继承可以简化类的定义。
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承【2】。
新类继承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的超类。
派生类可以从它的基类那里继承方法和变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”【3】。
多线程处理一个常见的例子就是用户界面。
利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。
线程的活动由一组方法来控制。
Java语言支持多个线程的同时执行,并提供多线程之间的同步机制【4】。
通过一个学期的学习,对Java有了一定的了解,为了巩固所学知识,编写一个剪刀石头布游戏。
1剪刀石头布游戏设计思路阐述在设计游戏时,我们要充分考虑到剪刀石头布游戏的特性,以及多种技术的实现:⑴构造创建服务器端和客户端⑵创建输入输出流⑶编写服务器端处理数据的线程方法⑷绘制游戏界面⑸绘制界面上的提示采用此方法设计使程序简洁明了,使绘制游戏界面时简单化,更加易于游戏的实现,程序也更易于读懂。
如java中得到输入输出流的方法://调用客户端的getInputStream()方法Inputs=newBufferedReader(new InputStreamReader(client.getInputStream()));通过调用此方法获取从服务器得到的数据调用客户端的getOutputStream()方法,通过此方法把客户端的数据传输给服务器。
2程序概要设计2.1功能需求分析一个剪刀石头布游戏,根据一般的常识,首先要有两个人,两个人同时出,然后,根据双方的出拳,决定谁是赢者,虽然想起来这个游戏很简单,但如何实现,还是有一定难度的。
实现这个时针时涉及到几个技术问题:1.双方如何出拳2.如何同时出拳3.如何判断哪方赢了4.如何显示结果剪刀石头布游戏,都是通过两个人同时出拳,然后根据双方出的拳,判定哪方是赢家。
2.2性能需求分析准确性:在实现此的过程中,我们要考虑到,双方是否能同时地出拳,还要就是如何去判断,准确地知道哪方是赢家.简洁性:在实现此的过程中,我们要考虑到,怎样使游戏界面更简单,让人更容易明白它怎样去玩。
2.3程序框图游戏程序框图如图1所示:图1 游戏程序框图2.4 JAVA类及自定义类相互继承的层次关系 2.4.1 Java类及自定义类的说明自定义类:类名:SocketServer作用:服务器类继承的父类:Thread类实现的接口:无类名:Service作用: 服务器类,它是判定胜负的类继承的父类:Thread类类中成员: String data;BufferedReader inputs;PrintStream outputs;Socket client;实现的接口:无类名:Client作用:客户端类类中的成员: getInputStream();getOutputStream();InputStreamReader ();readLine();实现的接口:无自定义类中子类和其父类的继承关系如图2如所示:图2 子类及其父类继承关系图2.4.2类中成员及作用Service类成员:String data; //接收数据BufferedReader inputs;// 读取数据PrintStream outputs;//输出数据Socket client;//定义套接字Client类成员:String data;//接收数据Socket client = null;//定义套接字BufferedReader inputs = null;// 读取数据BufferedReader key = null;// 缓冲数据PrintStream outputs = null;//输出数据2.5 程序运行效果及存在的问题2.5.1运行效果图剪刀石头布游戏效果如图3所示:图3时钟效果图2.5.2存在的问题此游戏界面简洁明了,但还是有许多问题的,比如说这个界面不是GUI 的,所以操作性不强,也不美观,而且处理数据的random函数也有问题,它可能出现相同的结果,不能成为真正意义上的随机,所以这个小游戏还是有许多问题的,我会进一步的改进它。
3程序详细设计3.1类获包的加载加载剪刀石头布游戏设计中用到的类和包,用于运行主程序:import java.io.*;import .*;3.2自定义类创建服务器端使用自定义类ServerSocket继承父类Thread使用run等方法,构造函数创建一个服务器端【5】。
程序代码如下:public class SocketServer extends Thread {ServerSocket server;public SocketServer() {try {server = new ServerSocket(6000);}catch(IOException e) {System.exit(0);}this.start();}public void run() {try {while(true) {Socket client = server.accept();Service ss = new Service(client);}}catch(IOException e) {System.exit(1);}}public static void main(String[] args) {new SocketServer();}}3.3创建数据处理类创建一个用于数据处理类使服务器能准确处理数据,获取数据,并使用方法run()实现数据处理。
实现代码如下://创建数据储存变量inputs = new BufferedReader(new InputStreamReader(client.getInputStream())); outputs = new PrintStream(client.getOutputStream());//创建一个Run方法public void run() {}3.4创建客户端类创建一个用于客户端接收玩家输入的数据的类,程序实现代码如下://接收客户端的数据public class Client {public static void main(String[] args) {String data;Socket client = null;BufferedReader inputs = null;BufferedReader key = null;PrintStream outputs = null;try {client = new Socket("localhost",6000);inputs = new BufferedReader(new InputStreamReader(client.getInputStream()));outputs = new PrintStream(client.getOutputStream());key = new BufferedReader(new InputStreamReader(System.in));}catch(IOException e) {System.out.println("CAN NOT CONN WITH SERVER");}try {while(true) {System.out.println("----------------------------");System.out.print("请出拳:石头/剪刀/布 ");data = key.readLine();outputs.println(data);System.out.println("ECHO: " + inputs.readLine());}}catch(IOException e) {System.out.println("ERROR IO");}try {client.close();}catch(IOException e) {System.out.println("can not close it");}}}4测试运行程序编写好后,用JCreator软件运行,检测程序设计结果,执行目标程序后得到如图4所示的窗体:图4 程序测试图经检测程序运行正常。