基于JAVA的剪刀石头布游戏设计

合集下载

JAVA小游戏代码(剪刀石头布)

JAVA小游戏代码(剪刀石头布)

JAVA⼩游戏代码(剪⼑⽯头布) /** 创建⼀个类Game,⽯头,剪⼑,布的游戏。

*/public class Game {/*** @param args*/String[] s ={"⽯头","剪⼑","布"};//获取电脑出拳String getComputer(int i){String computerGuess = s[i];return computerGuess;}//判断⼈出拳是否为⽯头,剪⼑,布boolean isOrder(String guess){boolean b = false;for(int x = 0;x < s.length; x++){if(guess.equals(s[x])){b = true;break;}}return b;}//⽐较void winOrLose(String guess1,String guess2){if(guess1.equals(guess2)){System.out.println("你出:" + guess1 + ",电脑出:" + guess2 + "。

平了");}else if(guess1.equals("⽯头")){if(guess2.equals("剪⼑"))System.out.println("你出:" + guess1 + ",电脑出:" + guess2 + "。

You Win!");}else{System.out.println("你出:" + guess1 + ",电脑出:" + guess2 + "。

You Lose!");}}else if(guess1.equals("剪⼑")){if(guess2.equals("布")){System.out.println("你出:" + guess1 + ",电脑出:" + guess2 + "。

java面向对象编程--猜拳小游戏

java面向对象编程--猜拳小游戏

java⾯向对象编程--猜拳⼩游戏java⾯向对象编程实现--猜拳⼩游戏⽬标⽬标:玩家在控制台和电脑猜拳,电脑每次都会随机出⽯头/剪⼑/布,直到玩家选择退出游戏。

记录并显⽰玩家和电脑猜拳的成绩。

设计思路分析电脑的随机猜拳可以使⽤随机数⽣成,这⾥规定 0表⽰⽯头,1 表⽰剪⼑,2 表⽰布。

为了显⽰清晰,可以设置⼀个⽅法将⽣成的随机数转换为对应⽯头/剪⼑/布。

玩家在控制台输⼊(⽯头/剪⼑/布),但玩家也可能输⼊别的数,所以这⾥需要做⼀个玩家的输⼊校验 ,并考虑给玩家退出游戏的选择。

记录的结果有玩家猜拳选择,电脑猜拳选择和胜负。

为了⽅便管理和显⽰,这⾥设计⼀个结果类。

⽤于记录猜拳的结果,因为猜拳次数可能不⽌⼀次,所以考虑将结果保存到集合中,这⾥使⽤ ArrayList集合。

具体代码实现如下:import java.util.ArrayList;import java.util.Scanner;public class FingerGuessingGame {//测试实现类public static void main(String[] args) {Tom tom = new Tom();tom.guess();}}//玩家类class Tom {Scanner sc = new Scanner(System.in);//猜拳public void guess() {System.out.println("----------猜拳游戏开始(-1退出)---------");//使⽤ArrayList保存结果ArrayList<GuessResult> results = new ArrayList<>();while (true) {//玩家输⼊String tomGuess = checkInput();//如果输⼊-1退出游戏if (tomGuess.equals("-1"))break;//⽣成0-2的随机数int num = (int) (Math.random() * 3);//将获取到的数字按照之前的规定转换为字符串String comGuess = convertComputerGuess(num);System.out.println("电脑出 " + comGuess);//判断输赢String isWin = winORLoose(tomGuess, comGuess);System.out.println(isWin);//将结果添加到集合中results.add(new GuessResult(tomGuess, comGuess, isWin));}//输出结果System.out.println("-------本次猜拳的结果------");System.out.println("玩家\t\t\t电脑\t\t\t胜负");for (GuessResult result : results) {System.out.println(result);}}//获取电脑猜拳结果public String convertComputerGuess(int num) {//0代表⽯头,1剪⼑,2布if (num == 0)return "⽯头";if (num == 1)return "剪⼑";if (num == 2)return "布";return "";}//玩家输⼊校验public String checkInput() {while (true) {System.out.println("你出(⽯头/剪⼑/布)-1退出:");String choice = sc.next();if (choice.equals("⽯头") || choice.equals("剪⼑") ||choice.equals("布") || choice.equals("-1")) {return choice;} elseSystem.out.println("你的输⼊有误! 请检查并重新输⼊:");}}//判断输赢public String winORLoose(String tomGuess, String comGuess) {if (tomGuess.equals("⽯头") && comGuess.equals("剪⼑"))return "赢";else if (tomGuess.equals("剪⼑") && comGuess.equals("布"))return "赢";else if (tomGuess.equals("布") && comGuess.equals("⽯头"))return "赢";else if (tomGuess.equals(comGuess))return "平⼿";elsereturn "输";}}//结果类⽤于记录猜拳的结果class GuessResult {private String tomGuess;private String ComGuess;private String isWin;public GuessResult(String tomGuess, String comGuess, String isWin) { this.tomGuess = tomGuess;ComGuess = comGuess;this.isWin = isWin;}@Overridepublic String toString() {returntomGuess +"\t\t\t"+ComGuess + "\t\t\t" +isWin ;}}。

石头、剪子、布——将游戏引入程序设计

石头、剪子、布——将游戏引入程序设计

2014-02百花园地初二信息技术教学中,我市采用的是江苏省初中信息技术(选修)课本,主要是进行VB程序设计的教学,让学生通过学习能够掌握VB这门编程语言,学会编写简单的程序,培养一定的编程思想,由于课程时间安排紧凑,在教学中就更要把握好每一节课的时间,充分提高课堂的效率。

在初中信息技术(选修)课本2.2.2中,要通过一个课时的时间,让学生了解、掌握条件语句,这在整个教学过程中都是一个重、难点。

条件语句是VB程序设计中的基本语句之一,其反映的是程序三大基本结构(顺序结构、循环结构和选择结构)中的选择结构,主要用于在程序执行过程中设置给定的条件,并根据给定的条件进行判断,再根据判断的结果来控制程序的流程。

在条件语句设置给定条件时,通常将条件表达式分为关系表达式和逻辑表达式,前者以<、<=、>、>=、=、<>等符号表示条件对象之间的关系,后者以and、or、not来表示条件与条件之间的逻辑关系。

作为一名初二的学生,在数学课堂上已经学习过部分逻辑关系,但由于本身逻辑思维能力的欠缺,以及对程序设计的兴趣不足,结合程序设计语句教学,结果大部分学生在条件设置、程序判断上还存在很多问题。

江苏省初中信息技术课本(选修)第八章第3节中,要求讲授条件语句中的IF语句,该节课程要求让学生在掌握顺序结构的基础上,学习了解选择结构,课本上的概念较多,实践较少,为了让学生更好地掌握IF语句,对程序选择结构能有一个更具体的了解,我将课外游戏的内容引入课堂,尝试调动学生的学习兴趣,提高课堂的效率。

在我以前的条件语句课程设计时,一般先进行情境的创设,如,以“明天爸爸妈妈带一家人前往尚湖公园,只要不下雨(条件)”为例,用“不下雨”这个条件进行判断,明天爸爸妈妈是不是带一家人去公园玩,让学生了解,这个就是条件、这个就是判断,再以“在尚湖公园入口要买票,学生半票,成人全票,老人免票(条件)”为例,重申条件和判断,并提出条件并不一定是2选1,还可以多选1。

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剪刀石头布

Java剪刀石头布

Java剪⼑⽯头布package day09_test;import java.util.Random;import java.util.Scanner;import day09.GamePlayer;import day09.GameRobot;public class GameTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输⼊猜拳⽐赛回合数:");int maxNumber = input.nextInt();//回合计数器int count = 0;//玩家胜利数int countP = 0;//电脑胜利数int countR = 0;while(count<maxNumber) {System.out.println("请输⼊你想出的数字:(1.剪⼑ 2.⽯头 3.布)");int PlayNum = input.nextInt();if (PlayNum>3 || PlayNum<=0) {System.out.println("输⼊有误!请重新输⼊:");PlayNum =input.nextInt();}GamePlayer player = new GamePlayer(PlayNum);player.say();//机器⼈随机输⼊1-3Random r = new Random();int RobotNum = r.nextInt(3)+1;GameRobot robot = new GameRobot(RobotNum);robot.say();//判断输赢if (player.getNumber()==robot.getNumber()) {count++;System.out.println("第"+count+"局:双⽅⼀致,请重新猜拳!");}else if (player.getNumber()==1) {//玩家出剪⼑if (robot.getNumber()==3) {//电脑出布count++;countP++;System.out.println("第"+count+"局:玩家赢,您得⼀分!");}else if (robot.getNumber()==2) {//电脑出⽯头count++;countR++;System.out.println("第"+count+"局:电脑赢,它得⼀分!");}}else if (player.getNumber()==2) {//玩家出⽯头if (robot.getNumber()==3) {//电脑出布count++;countP++;System.out.println("第"+count+"局:电脑赢,它得⼀分!");}else if (robot.getNumber()==1) {//电脑出剪⼑count++;countR++;System.out.println("第"+count+"局:玩家赢,您得⼀分!");}else if (player.getNumber()==3) {//玩家出布if (robot.getNumber()==2) {//电脑出布count++;countP++;System.out.println("第"+count+"局:玩家赢,您得⼀分!");}else if (robot.getNumber()==1) {//电脑出剪⼑count++;countR++;System.out.println("第"+count+"局:电脑赢,它得⼀分!");}}}if (countP==countR) {System.out.println("电脑得分:"+countR+" 玩家得分:"+countP); System.out.println("⽐赛结束,平局!");}else if (countP>countR) {System.out.println("电脑得分:"+countR+" 玩家得分:"+countP); System.out.println("⽐赛结束,玩家胜利!");}else {System.out.println("电脑得分:"+countR+" 玩家得分:"+countP); System.out.println("⽐赛结束,电脑胜利!");}}}package day09;public class GameRobot {private int number;public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public GameRobot() {super();// TODO Auto-generated constructor stub}public GameRobot(int number) {super();this.number = number;}public void say() {switch(this.number) {case 1:System.out.println("电脑出的是剪⼑");break;case 2:System.out.println("电脑出的是⽯头");break;case 3:System.out.println("电脑出的是布");break;}}package day09;/*** 今天的任务是通过控制台⽅式实现⼀个⼈机对战的猜拳游戏,⽤户通过输⼊(1.剪⼑ 2.⽯头 3.布),机器随机⽣成(1.剪⼑ 2.⽯头 3.布),胜者积分,n 局以后通过积分的多少判定胜负。

java游戏—石头剪刀布

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);

Java课程设计-剪刀、石头、布游戏 - 代燕清

Java课程设计-剪刀、石头、布游戏 - 代燕清

2012届课程设计20《剪刀、石头、布小游戏》课程设计说明书学生姓名代燕清学号5042209016所属学院信息工程学院专业计算机网络班级计算机网络专12指导教师李旭教师职称讲师塔里木大学教务处制我做的“剪刀,石头,布”游戏是一个很简单的Java小游戏,这个游戏是进行人机对战的,玩这个游戏时你只需要在对话框中输入自己想的答案就好了,例如你输入的是“石头”然后确认,这是电脑就会随即给出“剪刀,石头,布”中的一个,然后电脑会根据游戏规则判断对错问题。

用户只需要,输入心中想的答案即可。

关键词:Java;猜数字摘要 (1)目录 (2)前言 (2)项目概况 (3)2.1项目所用的时间 (3)2.2项目负责人 (4)2.3项目指导人 (4)正文 (4)3.1设计分析 (4)3.2程序结构(流程图) (4)3.3操作方法 (4)3.4试验结果(包括输入数据和输出结果) (5)总结 (6)致谢 (7)参考文献 (8)附录 (9)前言Java是在网络时代诞生的,因此必须适应网络发展的特殊需要.Java的发展和壮大并且逐渐成为网络变成的主流语言,则充分说明了java适应了网络发展的特殊需要,学习好该门课程是成为一个好的java程序员的前提条件,通过此次课程设计使学生达到提高动手能力的目的.Java语言作为当今 INTERNET上最流行的编程语言,它的产生和WWW密切相关,所以课程中还将对WWW技术进行必要的介绍.同时,对于信息安全专业的学生,掌握Java中的安全包的API和Sandbox也是极其重要的.通过本课程的学习,使学生掌握网络编程的基本方法,能够根据现实生活实践编制出一些实用的客户机/服务器小程序.为进一步学习维护网站信息安全的建设打下基础.为了加深对JAVA语言的掌握及对面向对象程序设计基本思想的理解,提高对面向对象技术的具体应用,进行本次课程设计.此次我做的课程设计项目是要设计一个猜数字游戏。

这个题目都是比较基础的内容,是作为一个学习网络应当具备的能力。

Java猜拳小游戏(剪刀、石头、布)

Java猜拳小游戏(剪刀、石头、布)

Java猜拳⼩游戏(剪⼑、⽯头、布)1、第⼀种实现⽅法,调⽤Random数据包,直接根据“1、2、3”输出“剪⼑、⽯头、布”。

主要⽤了9条输出判断语句。

import java.util.Random;import java.util.Scanner;public class caiquan{public static void main(String[] args){Random r=new Random();int diannao=r.nextInt(3)+1;Scanner s=new Scanner(System.in);System.out.println("=========猜拳⼩游戏=========");System.out.println("请输⼊1、2、3,1代表剪⼑,2代表⽯头,3代表布");int fangke=s.nextInt();if(diannao==1&&fangke==1){System.out.println("电脑出的是剪⼑,你出的是剪⼑,平局");}if(diannao==1&&fangke==2){System.out.println("电脑出的是剪⼑,你出的是⽯头,你赢了");}if(diannao==1&&fangke==3){System.out.println("电脑出的是剪⼑,你出的是布,电脑赢了");}if(diannao==2&&fangke==1){System.out.println("电脑出的是⽯头,你出的是剪⼑,电脑赢了");}if(diannao==2&&fangke==2){System.out.println("电脑出的是⽯头,你出的是⽯头,平局");}if(diannao==2&&fangke==3){System.out.println("电脑出的是⽯头,你出的是布,你赢了");}if(diannao==3&&fangke==1){System.out.println("电脑出的是布,你出的是剪⼑,你赢了");}if(diannao==3&&fangke==2){System.out.println("电脑出的是布,你出的是⽯头,电脑赢了");}if(diannao==3&&fangke==3){System.out.println("电脑出的是布,你出的是布,平局");}if(fangke!=1&&fangke!=2&&fangke!=3){System.out.println("只能输⼊1、2、3");}}} 2、第⼆种实现⽅法,不调⽤Random数据包,换成Math.random(),把“1、2、3”换成“剪⼑、⽯头、布”再输出。

java人机猜拳-石头剪刀布

java人机猜拳-石头剪刀布

java人机猜拳1.首先定义一个用户类:代码如下package mypackage;import java.util.*;public class Person {String name="";int score;public int showFist(){System.out.println("请出拳:1.剪刀2.石头3.布(输入相应数字)");Scanner input =new Scanner(System.in);int number=input.nextInt();switch(number){case 1:System.out.println("玩家出:剪刀");return number;case 2:System.out.println("玩家出:石头");return number;case 3:System.out.println("玩家出:布");return number;default:System.out.println("你出拳:剪刀");return number;}}}2.定义一个计算机类package mypackage;public class Computer {int max =3;int min =1;int number= (int)(Math.random()*(max-min))+min;int score;String name="电脑";public int showcomputer(){switch(number){case 1:System.out.println("电脑出:剪刀");return number;case 2:System.out.println("电脑出;石头");return number;case 3:System.out.println("电脑出:布");return number;default:System.out.println("电脑出:剪刀");return number;}}}3.创建一个游戏类package mypackage;import java.util.*;public class StartGame{public int Initial(){System.out.println("----------欢迎进入游戏世界----------");System.out.println("");System.out.println("\t****************");System.out.println("\t** 猜拳,开始**\t\t");System.out.println("\t****************");System.out.println("");System.out.println("出拳规则:1.剪刀2.石头3.布");System.out.println("请选择对方角色(1.刘备2.孙权3.曹操):");Scanner input =new Scanner(System.in);int number=input.nextInt();switch(number){case 1:System.out.print("刘备");return number;case 2:System.out.print("孙权");return number;case 3:System.out.print("曹操");return number;default:System.out.print("你选择了刘备作战");return number;}}public static void main(String[] args){//完善游戏类的startGame()方法,实现一局对战Computer computer =new Computer();Person player =new Person();StartGame come =new StartGame();Scanner input =new Scanner(System.in);come.Initial();System.out.println("");System.out.println("要开始么?y/n\n\n");String con =input.next();int count=0;while(con.equalsIgnoreCase("y")){int perFist=player.showFist();int compFist=computer.showcomputer();System.out.println("双方对战次数:" + count);if((perFist==1&&compFist==1)||(perFist==2&&compFist==2)||(perFist==3&&com pFist==3)){System.out.println("结果:平局,真衰!");count++;}elseif((perFist==1&&compFist==3)||(perFist==2&&compFist==1)||(perFist==3&&compFist ==2)){System.out.println("结果:恭喜,你赢了!");player.score++;}else{System.out.println("结果说,你输了,真笨!\n");count++;computer.score++;}System.out.println(+ "积分为:" + player.score+ "\t\t" + + "积分为:" + computer.score);System.out.println("是否继续?y/n");con =input.next();}while(con.equals("n")){if(player.score > computer.score) {System.out.println("最终结果:" + + "在" + count + "回合中战胜了" + );break;}else if(player.score < computer.score) {System.out.println("最终结果:" + + "在" + count + "回合中战胜了" + );break;}else {System.out.println("最终结果:" + + "在" + count + "回合中和" + + "战平");break;}}}}本代码归武汉市江岸区百步亭50号熊盼所有,未经武汉市江岸区百步亭50号熊盼允许,不得转载、复制。

用Java编程语言编写石头剪刀布游戏示例

用Java编程语言编写石头剪刀布游戏示例

用Java编程语言编写石头剪刀布游戏示例文章标题:用Java编程语言编写石头剪刀布游戏示例介绍内容:石头剪刀布游戏是一种简单而受欢迎的游戏,编程语言可以帮助我们实现一个可以和计算机进行对战的石头剪刀布游戏程序。

本文将介绍如何使用Java编程语言编写一个简单而有趣的石头剪刀布游戏示例。

首先,我们需要创建一个Java类,作为我们的游戏程序的主类。

接下来,我们可以使用Java的输入输出和随机数生成的类来实现游戏的逻辑。

下面是一个示例代码,用于实现一个石头剪刀布游戏:```javaimport java.util.Scanner;import java.util.Random;public class RockPaperScissorsGame {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Random random = new Random();String[] gestures = {"石头", "剪刀", "布"};System.out.println("欢迎来到石头剪刀布游戏!");while (true) {System.out.print("请输入你的选择(石头、剪刀、布):");String playerGesture = scanner.nextLine();if (!isValidGesture(playerGesture)) {System.out.println("无效的手势,请重新输入。

");continue;}int computerChoice = random.nextInt(3);String computerGesture = gestures[computerChoice];System.out.println("你的选择:" + playerGesture);System.out.println("电脑的选择:" + computerGesture);String result = calculateResult(playerGesture, computerGesture);System.out.println(result);System.out.print("是否要继续游戏?(是/否):");String continueChoice = scanner.nextLine();if (continueChoice.equalsIgnoreCase("否")) {break;}}System.out.println("谢谢你玩石头剪刀布游戏!");}private static boolean isValidGesture(String gesture) {return gesture.equals("石头") || gesture.equals("剪刀") || gesture.equals("布");}private static String calculateResult(String playerGesture, String computerGesture) {if (playerGesture.equals(computerGesture)) {return "平局!";} else if ((playerGesture.equals("石头") && computerGesture.equals("剪刀")) ||(playerGesture.equals("剪刀") && computerGesture.equals("布")) ||(playerGesture.equals("布") && computerGesture.equals("石头"))) {return "你赢了!";} else {return "你输了!";}}}```在上述Java代码中,我们首先使用Scanner类来接收玩家输入,使用Random类来生成电脑的随机选择。

基于JAVA的剪刀石头布游戏设计

基于JAVA的剪刀石头布游戏设计

目录1剪刀石头布游戏设计思路阐述 (2)2程序概要设计 (2)2.1功能需求分析 (2)2.2性能需求分析 (2)2.3程序框图 (3)2.4 JA V A类及自定义类相互继承的层次关系 (3)2.4.1 Java类及自定义类的说明 (3)2.4.2类中成员及作用 (4)String data;//接收数据 (4)Socket client = null;//定义套接字 (4)BufferedReader inputs = null;// 读取数据 (4)BufferedReader key = null;// 缓冲数据 (4)PrintStream outputs = null;//输出数据 (4)2.5 程序运行效果及存在的问题 (4)2.5.1运行效果图 (4)2.5.2存在的问题 (5)3程序详细设计 (5)3.1类获包的加载 (5)import java.io.*; (5)import .*; (5)3.2自定义类创建服务器端 (5)3.3创建数据处理类 (6)4测试运行 (7)5源代码清单 (8)6总结 (10)基于JAVA的剪刀石头布游戏设计1剪刀石头布游戏设计思路阐述在设计游戏时,我们要充分考虑到剪刀石头布游戏的特性,以及多种技术的实现:⑴构造创建服务器端和客户端⑵创建输入输出流⑶编写服务器端处理数据的线程方法⑷绘制游戏界面⑸绘制界面上的提示采用此方法设计使程序简洁明了,使绘制游戏界面时简单化,更加易于游戏的实现,程序也更易于读懂。

如java中得到输入输出流的方法://调用客户端的getInputStream()方法Inputs=newBufferedReader(new InputStreamReader(client.getInputStream()));通过调用此方法获取从服务器得到的数据调用客户端的getOutputStream()方法,通过此方法把客户端的数据传输给服务器。

java猜拳游戏

java猜拳游戏

java猜拳游戏出拳规则:1.剪刀2.石头3.布请选择对方角色(1:刘备2.孙权3.曹操)package sjlx.guess;import java.util.*;public class Computer extends Player {public Computer(){}public Computer(String name, int score){ super(name,score); }public void setScore(int score){super.setScore(score);}public String showFist(int choice){String cFist = " ";switch(choice){case 1:cFist = "剪刀";break;case 2:cFist = "石头";break;default:cFist = "布";break;}return cFist;}}====================================== ========================================= package sjlx.guess;import java.util.Scanner;public class Game {Computer cpt;User usr;int count;Scanner input = new Scanner(System.in);//初始化游戏public void initial(){System.out.println("*****猜拳开始*****");System.out.println("出拳规则:1.剪刀 2.石头 3.布");//选择对方的角色System.out.print("请选择对方角色(1:刘备 2:孙权 3:曹操):");int choice = input.nextInt();String name=" ";switch(choice){case 1:name = "刘备";break;case 2:name= "孙权";break;case 3:name = "曹操";break;}cpt = new Computer(name,0);//确定用户姓名System.out.print("输入你的姓名:");name = input.next();usr = new User(name,0);//显示对战信息System.out.println(cpt.getName()+" VS "+usr.getName()+" 对战");System.out.println("----------------------------");}//开始游戏public void start(){System.out.print("要开始吗?(y/n)");String answer= input.next(); //是否开始游戏while(answer.equals("y")){System.out.println();System.out.print("请出拳:1.剪刀2.石头3.布(请输入相应数字)");String uFist = usr.showFist(input.nextInt()); //用户出拳System.out.println();System.out.println("你出拳:"+uFist);//生成1~3之间的随机数int choice = (int)(Math.random()*3)+1;String cFist = cpt.showFist(choice); //计算机随机出拳System.out.println(cpt.getName()+"出拳:"+cFist);gameResult(uFist,cFist); //计算对战结果count++; // 对战次数加1System.out.println();System.out.print("是否开始下一轮(y/n):");answer = input.next();}showGamesResult();}//计算对战结果public void gameResult(String userFist, String cmpFist){if((userFist == "剪刀" && cmpFist == "布") ||(userFist == "石头" && cmpFist == "剪刀")||(userFist == "布" && cmpFist == "石头")){System.out.println("结果说:你赢了!");usr.setScore(usr.getScore()+1); //积分+1}else if(userFist.equals(cmpFist)){System.out.println("结果说:平局!!");}else{System.out.println("结果说:你输了!");cpt.setScore(cpt.getScore()+1);}}//显示对战结果public void showGamesResult(){System.out.println("----------------------------");System.out.println(cpt.getName()+" vs "+usr.getName());System.out.println("对战次数"+count);System.out.println("姓名\t得分");System.out.println(usr.getName()+"\t"+usr.getScore());System.out.println(cpt.getName()+"\t"+cpt.getScore());if(usr.getScore() > cpt.getScore()){System.out.println("结果:你赢了!");}else{System.out.println("结果:下次加油啊!");}System.out.println("----------------------------");}}====================================== ========================================= package sjlx.guess;public abstract class Player {private String name; //玩家姓名private int score; //玩家积分public Player(){}public Player(String name, int score){ = name;this.score = score;}public String getName(){return name;}public int getScore(){return score;}public void setScore(int score){this.score = score;}public abstract String showFist(int choice);}====================================== ========================================= package sjlx.guess;import java.util.Scanner;public class Test {public static void main(String[] args){Scanner input = new Scanner(System.in);String answer="";do{Game gm = new Game();gm.initial();gm.start();System.out.print("开始下一局吗?(y/n):");answer = input.next();}while(answer.equals("y"));System.out.println("系统退出!");}}====================================== ========================================= package sjlx.guess;public class User extends Player {public User(){}public User(String name, int score){super(name,score);}public void setScore(int score){ super.setScore(score);}public String showFist(int choice){ String cFist;switch(choice){case 1:cFist = "剪刀";break;case 2:cFist = "石头";break;default:cFist = "布";break;}return cFist;}}。

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

基于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分别表示石头剪刀布,通过游戏规则,判断用户和电脑的输赢。

-石头—剪刀—布游戏

-石头—剪刀—布游戏

石头剪刀布游戏1.课题简介在游戏中,孩子们用手表示石头、剪刀或布中的一个,出拳头表示石头,伸出两根手指表示剪刀,伸手表示布,孩子们面对面地从1数到3时做出他们的选择,如果所作的选择是一样的,则表示平局,否则就按如下规则决定胜负:(1)石头砸坏剪刀;(2)剪刀剪碎布;(3)布覆盖石头。

编程实现计算机与人进行游戏。

2.设计过程(一)系统功能分析:游戏中可能出现的选择情况都可以估计到,因此,定义一个枚举类型把游戏中可能出现的选择项都列出来,包括cloth(布),hammer(锤子),scissors(剪刀),game(游戏结果),help(帮助),instructions(游戏方法指导),quit(退出游戏)。

例enum c_h_s{cloth,hammer,scissors,game,help,instructions,quit};定义一个类Game,把需要让外界调用的成员函数指定为公用的,所以,类中的公用部分应包含玩家选择命令(select( ))、机器选择(mach( ))、提示游戏规则(instruct( ))、判断输赢(Win_lose( ))、游戏结果(gameshow( ))、帮助(gamehelp( ))等成员函数,另外有一个用来赋初值构造函数;而为了保证类的封装性和信息的隐蔽,应把数据成员指定为私有的如图1所示。

(二)系统流程分析:图1、定义类Game的函数调用,函数流程图如下所示:图2、实现机器对锤子、剪刀或布选择的算法流程图,如下所示:图3、游戏选择函数,算法流程图:图4、输出游戏结果流程图如下所示:图5、主函数实现流程图如下所示:图6、统计游戏从开始运行到现在运行的结果流程图如下所示:(三)具体设计分析如下:1.1Game类实现1.1.1数据成员说明:int win; // 赢的次数int lose; //输的次数int tie; //平局次数enum c_h_s player; //玩家的选择enum c_h_s machine; //机器的选择1.1.2成员函数说明与实现1.1.2.1构造函数Game( )函数:Game( )功能:对赢、输、平局的数据成员初始化为0。

JAVA实现“剪刀石头布”小游戏

JAVA实现“剪刀石头布”小游戏

JAVA实现“剪刀石头布”小游戏JAVA实现“剪刀石头布”小游戏import java.util.Random;import javax.swing.*;import java.awt.BorderLayout;import java.awt.Container;import java.awt.event.*;public class SmallGame extends JFrame {private Random r;private String[] box = { "剪刀", "石头", "布" };private JComboBox choice;private JTextArea ta;private JLabel lb;private int win = 0;private int loss = 0;private int equal = 0;public SmallGame() {initial();//调用initial方法,就是下面定义的那个.该方法主要是初始界面.pack();setTitle("游戏主界面");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocation(400, 300);setVisible(true);}public static void main(String[] args) {new SmallGame();}public void initial() {r = new Random(); // 生成随机数choice = new JComboBox();//初始化choice这个下拉框.也就是你选择出剪子还是石头什么的那个下拉框..for (int i = 0; i < box.length; i++) {//为那个下拉框赋值.用前面定义的private String[] box = { "剪刀", "石头", "布" };附值.这样下拉框就有三个选项了..choice.addItem(box[i]);}ta = new JTextArea(3, 15);//初始化那个文本域3行15列ta.setEditable(false);//让用户不能编辑那个文本域即不能在里面写东西JButton okBut = new JButton("出招");//新建一个出招的按钮okBut.addActionListener(new ActionListener() {//给出招按钮加个监听.意思就是监听着这个按钮看用户有没有点击它..如果点击就执行下面这个方法public void actionPerformed(ActionEvent e) {//就是这个方法ta.setText(getResult());//给那个文本域赋值..就是显示结果赋值的是通过getResult()这个方法得到的返回值getResult()这个方法下面会讲lb.setText(getT otal());//给分数那个LABEL赋值..就是显示分数..赋值的是通过getT otal()这个方法得到的返回值}});JButton clearBut = new JButton("清除分数");//新建一个清楚分数的按钮clearBut.addActionListener(new ActionListener() {//同上给他加个监听public void actionPerformed(ActionEvent e) {//如果用户点击了就执行这个方法ta.setText("");//给文本域赋值为""..其实就是清楚他的内容win = 0;//win赋值为0loss = 0;//同上equal = 0;//同上lb.setText(getT otal());//给显示分数那个赋值..因为前面已经都赋值为0了..所以这句就是让显示分数那都为0}});lb = new JLabel(getTotal());//初始化那个显示分数的东西JPanel choicePanel = new JPanel();//定义一个面板..面板就相当于一个画图用的东西..可以在上面加按钮啊文本域什么的..choicePanel.add(choice);//把下拉框加到面板里choicePanel.add(okBut);//把出招按钮加到面板里choicePanel.add(clearBut);//把清楚分数按钮加到面板里JScrollPane resultPanel = new JScrollPane(ta);//把文本域加到一个可滚动的面板里面..JScrollPane就是可滚动的面板..这样如果那个文本域内容太多就会出现滚动条..而不是变大JPanel totalPanel = new JPanel();//再定义个面板..用来显示分数的..totalPanel.add(lb);//把那个显示分数的label加到里面去Container contentPane = getContentPane();//下面就是布局了..contentPane.setLayout(new BorderLayout());contentPane.add(choicePanel, BorderLayout.NORTH);contentPane.add(resultPanel, BorderLayout.CENTER);contentPane.add(totalPanel, BorderLayout.SOUTH);}public String getResult() {//获得结果的方法返回值是一个String..这个返回值会用来显示在文本域里面String tmp = "";int boxPeop = choice.getSelectedIndex();//获得你选择的那个的索引..从0开始的..int boxComp = getBoxComp();//获得电脑出的索引..就是随机的0-2的数tmp += "你出:\t" + box[boxPeop];//下面你应该明白了..tmp += "\n电脑出:\t" + box[boxComp];tmp += "\n结果:\t" + check(boxPeop, boxComp);return tmp;}public int getBoxComp() {//就是产生一个0-2的随机数..return r.nextInt(3);//Random的nextInt(int i)方法就是产生一个[0-i)的随机整数所以nextInt(3)就是[0-2]的随机数}public String check(int boxPeop, int boxComp) {//这个就是判断你选择的和电脑选择的比较结果..是输是赢还是平..boxPeop就是你选择的..boxComp就是电脑选择的..String result = "";if (boxPeop == (boxComp + 1) % 3) {//(boxComp + 1) % 3 电脑选择的加上1加除以3取余..也就是如果电脑选0这个就为1..这个判断的意思就是如果电脑选0并且你选1..那么就是电脑选了//private String[] box = { "剪刀", "石头", "布" };这里面下标为0的..你选了下标为1的..就是电脑选剪刀你选石头..所以你赢了..如果电脑选1..(boxComp + 1) % 3就为2..意思就是//电脑选了石头你选了布..所以你赢了..另外一种情况你明白了撒..只有三种情况你赢..所以这里都包含了..也只包含了那三种..result = "你赢了!";win++;//赢了就让记你赢的次数的那个变量加1} else if (boxPeop == boxComp) {//相等当然平手了result = "平";equal++;//同上了} else {//除了赢和平当然就是输了..result = "你输了!";loss++;//同上}return result;}public int getPoint() {return (win - loss) * 10;}public String getT otal() {return "赢:" + win + " 平:" + equal + " 输:" + loss + " 得分:"+ getPoint();}}更多JA V A小游戏。

Java如何编写石头剪子布游戏程序

Java如何编写石头剪子布游戏程序

Java如何编写⽯头剪⼦布游戏程序加⼊电竞战队,是每⼀个⼈喜欢玩游戏⼈的梦想。

作为⼀个初学Java的游戏爱好者,就只能来编写⼀个⼩游戏了。

经过了⼏天的断断续续优化,⽯头剪⼦布游戏程序算是出炉了!(最后附有完整程序)先来讲讲功能:可以和电脑玩⽯头剪⼦布的游戏,程序会告诉你谁获胜,电脑是随机出的。

采⽤三局两胜制,最终电脑会告诉你最终的获胜者,如图。

⾸先,写程序之前还是要先来分析:两个⼈玩⽯头剪⼦布会出现9种不同的情况如下图:结果其实就三种:“电脑胜”,“⼈胜”,“平局”。

弄清楚了运⾏的流程,我们就可以开始写程序了。

写程序不能⼀上来就⾮要想的很清楚在动⼿,这样只是浪费时间,有⼀点思绪了就可以开始。

⾸先,我们先写⼀个⼈机交互的代码:System.out.println("欢迎来到⽯头剪⼦布的游戏!");System.out.println("tips:请输⼊中⽂!");System.out.println(("\t")+"第"+(i+1)+"局");System.out.println("准备......开始!");System.out.println("请出'⽯头',‘剪⼦’,‘布’中的⼀个!");接下来的这⼏步由于学习的知识有限,绞尽了脑汁,才想出来的⽅法,只为让电脑能够判断⼈出的“⽯头剪⼦布”可以和电脑出的“⽯头剪⼦布”作⽐较这样就可以在myeclipse⾥⾯输⼊中⽂:输⼊中⽂通过if “转换”成数字信息,同时输出中⽂,别看这是在做⽆⽤功,后⾯⽤处就⼤了:经过⼀番转化,终于完成了汉字和数字之间的⽐较。

接下来就是做⼀个三局两胜制的判断:int personScore=0;int computerScore=0;for(int i=0;i<3;i++){(上⾯两张图的程序)}System.out.println("电脑得分:"+computerScore);System.out.println("您得分"+personScore);if(computerScore>personScore){System.out.println("最终结果为:电脑获胜!");}else if(computerScore==personScore){System.out.println("最终结果为:平⼿!");}else{System.out.println("最终结果为:您获胜!");}最终就能够完成游戏的结果输出!下⾯就是整段完整程序:⼤家有什么疑问可以评论,和指出不⾜之处,谢谢!。

java实现简单石头剪刀布小游戏

java实现简单石头剪刀布小游戏

java实现简单⽯头剪⼑布⼩游戏简介⽯头剪⼑布游戏,进⼊游戏后,玩家需要输⼊玩家姓名。

系统界⾯之后弹出欢迎界⾯,玩家可以选择出拳或者退出游戏。

玩家选择出拳后同电脑出拳⽐较,输出猜拳结果。

最后退出游戏后显⽰排⾏榜,输出总局数,胜率。

分析通过while循环死循环模拟不断进⾏游戏,当⽤户输⼊0时break跳出while循环。

通过Random产⽣随机数模拟AI出拳定义了⼀个choose⽅法,将⽤户输⼊和AI随机⽣成的数,转换成剪⼑、⽯头和布。

判断输赢逻辑:1:⽯头 2:剪⼑ 3:布变量userChoose中存储的是⽤户的出拳变量ai中存储的是电脑的出拳当userChoose - ai 等于-1或2时,⽤户赢当userChoose - ai 等于0时,平局当userChoose - ai 等于1或-2时,电脑赢源代码public static void main(String[] args) {Scanner sc = new Scanner(System.in);Random r = new Random();int count = 0; // 总局数int win = 0; // 获胜局数int result = 0; // 结果int ai = 0; // 电脑出拳System.out.print("请输⼊姓名:");String name = sc.nextLine();while(flag) {System.out.println("************************************************");System.out.println("欢迎"+ name + "进⼊猜拳游戏");System.out.println("1.⽯头 2.剪⼑ 3.布 0.退出");System.out.println("************************************************");System.out.print("请输⼊数字:");int userChoose = sc.nextInt(); // 玩家选择if (userChoose == 0) { // 游戏结束break;}// AI出拳ai = r.nextInt(3)+1;// 输出玩家和电脑的出拳System.out.println("你的出拳是:" + choose(userChoose));System.out.println("电脑出拳是:" + choose(ai));// 判断输赢switch(userChoose - ai) {case -1: // 赢case 2:System.out.println("你赢了!╭(╯^╰)╮");win++; // ⽤户赢,赢场计数器⾃增1count++; // 局数计数器⾃增1break;case 0: // 平局System.out.println("平局,再来⼀局~~~~~o(* ̄︶ ̄*)o");count++;break;case 1: // 输case -2:System.out.println("你输了! O(∩_∩)O哈哈~");count++;break;}System.out.println("\n");}System.out.println();System.out.println("\t\t\t\t排⾏榜");System.out.println("************************************************");System.out.println("姓名\t\t总局数\t\t赢场\t\t胜率");System.out.println(name + "\t\t" + count + "\t\t\t" + win + "\t\t\t" + String.format("%.2f", (win*1.0/count)*100) + "%");}// 返回出拳public static String choose(int choose) {switch(choose) {case 1:return "⽯头";case 2:return "剪⼑";case 3:return "布";}return "";}游戏截图进⼊游戏输⼊姓名,显⽰菜单:⽤户出⽯头:⽤户出剪⼑:⽤户出布:输⼊0游戏结束:总结本程序是学习中的⼀个⼩案例,⽬前程序⽐较基础,只能记录⼀个玩家的信息,且数据不能存在本地。

石头剪刀布游戏设计

石头剪刀布游戏设计

沈阳工程学院课程设计任务书课程设计题目:剪刀石头布游戏模拟器系别自动控制工程系班级电子本101 学生姓名李明杰学号 2010311107 指导教师田景贺职称讲师课程设计进行地点:实训F215 任务下达时间: 2012 年 9 月 3 日起止日期: 2012年9月3日起——至 2013年1月11日止教研室主任田景贺 2012年 9月 3日批准1.设计题目:剪刀石头布模拟游戏设计1.1设计目的:(1)能独立查阅、整理、分析有关资料(2)能用数字集成电路完成设计任务(3)掌握脉冲产生、整形与分频电路(4)掌握计数、译码与显示电路1.2基本要求:(1)由按键模拟游戏动作,5局三胜。

(2) 2位数码管显示游戏比分(3)胜负指示(4)系统外电源为AC 220V。

1.3有能力的同学可以利用课余时间进行电路焊接及调试。

2.设计过程的基本要求:2.1 基本部分必须完成,学有余力的同学可以根据自己的能力自行确定发挥部分并完成。

2.2 符合设计要求的报告一份。

设计报告内容要求:1. 写出你考虑该问题的基本思路,画出一个实现电路功能的大致框图。

2. 设计出框图中各部分逻辑电路,可用中、小规模集成电路,也可用中规模集成电路连接而成。

对各部分电路的工作原理应作出说明。

最后,画出整个设计电路的原理电路图,并说明电路工作原理。

3. 进行设计的仿真验证。

4. 要求用A4纸打印,不允许复印。

装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

5. 2012年9月14日前提交一份总体设计性报告(主要为总体设计,系统框图,功能解析及系统设计的目标),设计报告提交的截止时间为2012年12月31日。

沈阳工程学院数字电子课程设计成绩评定表系(部):自动控制工程系班级:电子本101班学生姓名:李明杰本次课程设计的题目是剪刀石头布模拟游戏设计,其主要功能为:甲乙分别有A、B、C三个按键,分别代表石头、剪刀、布。

两人同时按下一个按键,依据石头剪刀布的游戏规则判定胜、负、平,采取五局三胜制,胜利局数由七段式数字显示器显示,且可以手动清零。

范例__Java课程设计项目报告

范例__Java课程设计项目报告

计算机科学与技术学院“课程设计”项目报告项目名称:石头剪刀布小游戏专业:14软件工程班级:14软件工程学号:143801013 姓名:邓舒成绩:学号:143801012 姓名:王威成绩:指导教师:鲁屹华申请日期:2016年春学期湖北科技学院计算机科学与技术学院制3.2 设置界面3.4 详细设置界面3.6 手动添加设备界面3.8 呼吸灯界面3.10 闹钟灯界面说明:附:答辩记录1.service里的public List<PhotoBean> showPhoto(String photo_theme)方法作用?答:根据主题查找图片的相关信息2.TimeTools工具类作用?答:获取当前时间的,两种方法分别是获取两种格式的时间,一个是20160101222222,一个2016-01-01 22:22:223.applicationContext.xm里<bean id="userBeanDao" class="erBeanDaoHibernate"> <property name="sessionFactory" ref="sessionFactory"></property></bean>作用?答:注入会话工厂,相当于new一个对象userBeanDao,然后将sessionFactory注入里面问:在并发连接的时候是怎么处理的?答:现在是采用把一个完整的服务器端的程序分成几个不同的不同的项目,使整个服务器端的程序可以放在不同的主机上运行,以浪费主机的方式达到快速响应的目的,后期会采用Nginx负载均衡的方式处理高并发的情况。

问:在你的系统中是怎样对数据存储的?答:在本系统中采用了二级存储体系,传统的mysql数据库实现数据的实时存储,为了提高用户访问服务器的速度,把活跃用户的信息和设备信息存储在redis数据库中。

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

目录前言 (3)1剪刀石头布游戏设计思路阐述 (3)2程序概要设计 (4)2.1功能需求分析 (4)2.2性能需求分析 (4)2.3程序框图 (4)2.4 Java类及自定义类相互继承的层次关系 (4)2.4.1 Java类及自定义类的说明 (5)2.4.2类中成员及作用 (5)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。

在面向对象程序设计中,通过继承可以简化类的定义。

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

对象的一个新类可以从现有的类中派生,这个过程称为类继承。

新类继承了原始类的特性,新类称为原始类的派生类,而原始类称为新类的超类。

派生类可以从它的基类那里继承方法和变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。

多线程处理一个常见的例子就是用户界面。

利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。

在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。

通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。

值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。

线程的活动由一组方法来控制。

Java语言支持多个线程的同时执行,并提供多线程之间的同步机制。

通过一个学期的学习,对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;//输出数据3程序详细设计3.1类获包的加载加载剪刀石头布游戏设计中用到的类和包,用于运行主程序:import java.io.*;import .*;3.2自定义类创建服务器端使用自定义类ServerSocket继承父类Thread使用run等方法,构造函数创建一个服务器端。

程序代码如下:public class SocketServer extends Thread {ServerSocket server;public SocketServer() {try {server = new ServerSocket(8080);}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(InetAddress.getLocalHost(),8080);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测试运行程序编写好后,用MyEclipse软件运行,检测程序设计结果,执行目标程序后得到如图4所示的窗体:图4 程序测试图“空格+石头、剪刀或布”经检测程序运行正常。

5源代码清单import java.io.*;import .*;public class SocketServer extends Thread {ServerSocket server;public SocketServer() {try {server = new ServerSocket(8080);}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();}}public class Service extends Thread {String data;BufferedReader inputs;PrintStream outputs;Socket client;public Service(Socket socket) {client = socket;try {inputs=new BufferedReader(new InputStreamReader(client.getInputStream()));outputs = new PrintStream(client.getOutputStream());}catch (IOException e) {e.printStackTrace();}this.start();}public void run() {try {while (true) {data = inputs.readLine();int res = (int) (Math.random() * 3);if (data == null)break;else {if (res == 0 && "石头".equals(data)) {data = "电脑也是石头,打平了!!";} else if (res == 0 && "剪刀".equals(data)) {data = "电脑是石头,电脑赢了!!";} else if (res == 0 && "布".equals(data)) {data = "电脑是石头,恭喜,你赢了!!";} else if (res == 1 && "石头".equals(data)) {data = "电脑是剪刀,恭喜,你赢了!!";} else if (res == 1 && "剪刀".equals(data)) {data = "电脑也是剪刀,打平了!!";} else if (res == 1 && "布".equals(data)) {data = "电脑是剪刀,电脑赢了!!";} else if (res == 2 && "石头".equals(data)) {data = "电脑是布,电脑赢了!!";} else if (res == 2 && "剪刀".equals(data)) {data = "电脑是布,恭喜,你赢了!!";} else if (res == 2 && "布".equals(data)) {data = "电脑也是布,打平了!!";} else {data = "电脑不认识你出的拳"; }outputs.println(data);}}} catch (IOException e) {e.printStackTrace();}try {client.close();} catch (IOException e) {e.printStackTrace();}}}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",8080);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");}}}6总结通过此次的课程设计,让我们了解和学会了许多Java的基础知识。

相关文档
最新文档