Java程序设计人机猜拳

合集下载

java猜拳小游戏课程设计

java猜拳小游戏课程设计

java猜拳小游戏课程设计一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量声明、数据类型、运算符和条件语句。

2. 使学生了解猜拳游戏的逻辑规则,并将其转化为程序代码。

3. 帮助学生理解面向对象编程的基本概念,如类、对象和方法的定义。

技能目标:1. 培养学生运用Java编写简单程序的能力,尤其是控制流程和逻辑判断。

2. 提高学生运用面向对象编程方法解决问题的能力,如设计类和对象,以及调用方法。

3. 培养学生调试和优化程序的能力,以实现更高效的猜拳游戏。

情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动探索和解决问题的热情。

2. 培养学生团队合作精神,通过小组讨论和分享,共同优化猜拳游戏。

3. 引导学生认识到编程在现实生活中的应用价值,激发其将所学知识应用于实际问题的意识。

针对课程性质、学生特点和教学要求,本课程目标将分解为以下具体学习成果:1. 学生能够独立编写并运行一个简单的Java猜拳游戏程序。

2. 学生能够在程序中正确使用变量、数据类型、运算符、条件语句和面向对象编程方法。

3. 学生能够通过小组合作,优化猜拳游戏程序,提高游戏体验。

4. 学生能够表达对编程的兴趣,积极参与课堂讨论,分享编程心得和经验。

二、教学内容1. Java基本语法回顾:变量声明、数据类型、运算符、条件语句。

- 教材章节:第2章 Java语言基础2. 面向对象编程基本概念:类、对象、方法。

- 教材章节:第4章 面向对象编程基础3. 猜拳游戏逻辑规则介绍:游戏规则、胜负判断。

- 教材章节:第6章 Java编程实例4. 编写猜拳游戏程序:设计类和对象,实现游戏逻辑。

- 教材章节:第6章 Java编程实例5. 程序调试与优化:调试技巧、性能优化。

- 教材章节:第7章 程序调试与优化6. 团队合作与分享:小组讨论、成果展示。

- 教材章节:附录 团队合作与沟通教学内容安排与进度:1. 课时1:Java基本语法回顾,面向对象编程基本概念介绍。

猜拳游戏java课课程设计

猜拳游戏java课课程设计

猜拳游戏java课课程设计一、教学目标本节课的学习目标为:知识目标:使学生掌握Java猜拳游戏的基本原理和实现方式,理解面向对象编程的基本概念。

技能目标:培养学生运用Java语言进行程序设计的能力,能够独立完成简单的猜拳游戏程序。

情感态度价值观目标:培养学生对计算机编程的兴趣和好奇心,提高学生解决问题的自信心。

二、教学内容本节课的教学内容主要包括:1.Java猜拳游戏的基本原理和实现方式。

2.面向对象编程的基本概念和应用。

3.Java语言的基本语法和操作方法。

教学大纲安排如下:1.第一课时:讲解猜拳游戏的基本原理和实现方式,让学生了解猜拳游戏的逻辑结构。

2.第二课时:介绍面向对象编程的基本概念,通过实例讲解如何运用面向对象思想设计猜拳游戏。

3.第三课时:教授Java语言的基本语法和操作方法,让学生能够独立编写简单的猜拳游戏程序。

4.第四课时:对学生的猜拳游戏程序进行讲解和评价,让学生了解自己的学习成果和不足之处。

三、教学方法本节课采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解猜拳游戏的基本原理和实现方式,让学生了解猜拳游戏的逻辑结构。

2.讨论法:分组讨论如何运用面向对象思想设计猜拳游戏,促进学生之间的交流与合作。

3.案例分析法:分析优秀的猜拳游戏程序,让学生了解实际编程中的技巧和方法。

4.实验法:让学生动手编写猜拳游戏程序,培养学生的实际编程能力。

四、教学资源本节课的教学资源包括:1.教材:《Java编程思想》2.参考书:《Java核心技术》3.多媒体资料:猜拳游戏案例分析视频4.实验设备:计算机、网络设施以上教学资源能够支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本节课的评估方式包括:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

2.作业:布置相关的猜拳游戏编程作业,评估学生的编程能力和理解程度。

3.考试:期末进行Java编程考试,考察学生对猜拳游戏和相关知识的掌握程度。

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 ;}}。

JAVA人机猜拳小游戏代码

JAVA人机猜拳小游戏代码

JAVA人机猜拳小游戏代码//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+"---平局");}elseif(person==1&&computer==2||person==2&&computer==3||person==3&&computer==1){System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"—_—你输了~");}else{System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"^_^你赢了~");}}}//应用说明:只要把代码复制到TXT写字板再把扩展名改为JAVA就行了;。

人机猜拳小游戏

人机猜拳小游戏

Java程序设计基础实验报告班级:学号:姓名:实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。

人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。

有基本的UI界面。

实验内容:1、问题分析过程:实验针对java的具体应用,设计了猜拳小游戏。

根据游戏的规则,玩家可以和电脑进行对战。

成学的主要功能是使用标准的JDK进行编译和运行。

定义玩家自己选择性出拳,电脑随机出拳,赢的记10分,输的记0分,平局都记10分。

本程序设计了Game、Person、Player、等多个类,通过程序设定的规则来实现游戏。

<登陆界面)(初始界面)<游戏界面)2、主要实现代码:******************************// LoginFramepackage com.hsj.client。

import javax.swing.SwingUtilities。

import java.awt.BorderLayout。

import javax.swing.JPanel。

import javax.swing.JFrame。

import javax.swing.JLabel。

import java.awt.Rectangle。

import javax.swing.JComboBox。

import javax.swing.JScrollPane。

import javax.swing.JButton。

import com.hsj.domain.Game。

/*** 猜拳小游戏的登录界面* @author hsj* @version 1.0**/public class LoginFrame extends JFrame {private static final long serialVersionUID = 1L。

/*** JFrame窗体的内容面板*/private JPanel jContentPane = null。

java13人机猜拳

java13人机猜拳

java13⼈机猜拳public class Demo01 {public static void main(String[] args) {/** 你同桌和你要玩游戏.* 1 剪⼑,2 ⽯头,3 布*/// 判断结果.// 1 剪⼑,2 ⽯头,3 布int a = 1;// 剪⼑int b = 2;// ⽯头if (a == 1 && b == 3 || a == 2 && b == 1 || a == 3 && b == 2) {// 你赢了.System.out.println("你赢了");} else if (a == 1 && b == 2 || a == 2 && b == 3 || a == 3 && b == 1) {// 你输了System.out.println("你输了");} else {// 平局System.out.println("平局");}// int a = 5;// int b = 2;// 5⽐2⼤.}}package com.jh.test01;import java.util.Scanner;/**** ⽤户名* 属性: 姓名,积分.* 功能:出拳的功能.*/public class User {// 属性:// 姓名String name;// 积分--分数int score;// 出拳的功能。

/** 1 剪⼑,2 ⽯头,3 布* 1: 返回值类型。

int* 2:参数列表 -- ⽆*//*** "1 剪⼑,2 ⽯头,3 布"* @return 出的拳*/public int userHand() {Scanner sc = new Scanner(System.in);System.out.println("请输⼊你出的⼩拳拳");System.out.println("1 剪⼑,2 ⽯头,3 布");int num = sc.nextInt();// 等值判断switch (num) {case 1:System.out.println("您输出了剪⼑");break;case 2:System.out.println("您输出了⽯头");break;case 3:System.out.println("您输出了布");break;default:break;}return num;}}package com.jh.test01;import java.util.Random;/*** 电脑类。

Java实现人机对战猜拳游戏

Java实现人机对战猜拳游戏

Java实现⼈机对战猜拳游戏本⽂实例为⼤家分享了Java实现⼈机对战猜拳游戏的具体代码,供⼤家参考,具体内容如下通过控制台⽅式实现⼀个⼈机对战的猜拳游戏1.⽤户通过输⼊(2.剪⼑ 0.⽯头 5.布)2.机器随机⽣成(2.剪⼑ 0.⽯头 5.布)3.胜者积分4.n 局以后通过积分的多少判定胜负。

开发⼯具:IDEA分析:1.在这个猜拳游戏⾥⾸先要解决的是机器⼈如何出拳?解决:通过预设⼀个字符串,然后通过Random类的nextInt⽅法获取到⼀个随机整数,将这个整数作为字符串的下标,再通过循环的⽅法来组成⼀个随机数。

⽣成对应的出拳情况2.⽣成的随机数如何⽐较?解决:使⽤equals()进⾏⽐较3.如何积分?解决:先给⼈机各初始积分为0分,每⽐较⼀次就记⼀次分,这⾥赢⼀局记10分完整代码如下:import java.util.Random;import java.util.Scanner;public class MoraTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("--- 猜拳游戏 ---");System.out.println("你想和机器⼈玩多少局:请输⼊(1-100)");//输⼊轮数int number = input.nextInt();System.out.println("请输⼊对应数值:\n0-⽯头 2-剪⼑ 5-布");int userIntegral = 0;//⽤户积分int robotIntegral = 0;//机器⼈积分for (int i = 0; i < number; i++) {String num = getRandom(1);//获取随机数String userNum = input.next();//输⼊出拳的值String u = putFist(userNum);//根据⽤户输⼊的值给对应的剪⼑、⽯头、布System.out.println("⽤户的出拳为:"+u);String n = putFist(num);//根据机器类随机⽣成的数值给对应的剪⼑、⽯头、布System.out.println("机器⼈出拳为:"+n);//如果⽤户出⽯头if ("0".equals(userNum)) {if ("2".equals(num)) {//如果机器⼈出剪⼑,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");} else if ("5".equals(num)) {//如果机器出布,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");} else {//如果机器出⽯头,则平局,不积分System.out.println("平局!");}} else if ("2".equals(userNum)) {//如果⽤户出剪⼑if ("2".equals(num)) {//如果机器⼈也出剪⼑,则平局System.out.println("平局!");} else if ("5".equals(num)) {//如果机器出布,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");} else {//如果机器出⽯头,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");}} else {//如果⽤户出布if ("2".equals(num)) {//如果机器⼈出剪⼑,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");} else if ("5".equals(num)) {//如果机器出布,则平局System.out.println("平局!");} else { //如果机器出⽯头,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");}}num = null;}System.out.println("****************");System.out.println("战⽃结束,查看分数:");System.out.println("⽤户总积分:"+userIntegral+"分");System.out.println("机器⼈总积分:"+robotIntegral+"分");if (userIntegral > robotIntegral){System.out.println("经过"+number+ "局后,最终的胜利者是:⽤户!");} else if (userIntegral == robotIntegral) {System.out.println("经过"+number+ "局后,你们打成了平局");} else {System.out.println("经过"+number+ "局后,最终的胜利者是:机器⼈!");}}public static String putFist(String s){String fist = null;if ("0".equals(s)){fist = "拳头";} else if ("2".equals(s)) {fist = "剪⼑";} else if ("5".equals(s)){fist = "布";} else {System.err.println("你输⼊的不对!");return null;}return fist;}//拳头属性//0-⽯头 2-剪⼑ 5-布public static String getRandom(int length) {String fistNum = "520";//创建⼀个新的随机数⽣成器。

Java程序设计人机猜拳

Java程序设计人机猜拳

Java程序设计实验报告班级:11060341X 学号:50 姓名:马一桃实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。

人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。

有简单的操作界面。

实验内容:1、问题分析过程:人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现。

电脑那么随机性出拳,由电脑产生随即数来实现。

通过游戏规那么判断双方的输赢,显示当局的输赢情况,并记录当局的分数,并各方的输赢情况。

游戏完毕时显示双方的分数以及输赢情况。

面向的对象有人、电脑以及游戏规那么。

人、电脑都有实现自己出拳的方法,同时还要有判断各方输赢的方法。

2、主要实现代码:〔要求有必要的注释〕:import java.util.Scanner; //通过import语句引入Scanner类public class Game{public static void main(String args[]){int x=0; //用户的初始分数为0int y=0; //电脑的初始分数为0int z=0; //开场时决战次数为0System.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:System.out.println("我出拳: 石头");break;case 2:System.out.println("我出拳: 剪刀");break;case 3:System.out.println("我出拳: 布");break;}int B = (int)((Math.random()*10)%3 + 1); //电脑产生随机数,进展出拳 switch(B){case 1:System.out.println("电脑出拳: 石头");break;case 2:System.out.println("电脑出拳: 剪刀");break;case 3:System.out.println("电脑出拳: 布");break;}if(A==B){ //一局游戏判断输赢的过程System.out.println("哎呦,平局!再努力! ");z++;}else if(((A==1)&(B!=3))||((A==2)&(B!=1))||((A==3)&(B!=2))){System.out.println("不错嘛,赢了!");x++;z++;}else{System.out.println("唉,输了,得加油啊!");y++;z++;}System.out.println("\n");System.out.println("有种再来一局"+"\n"+"y/n");m = shuzi.next();}System.out.println("游戏完毕" );System.out.println("对战的次数为"+z);System.out.println("你的分数:" +x);System.out.println("电脑的分数:"+y);if(x>y){ //最终比游戏结果的判断System.out.println("噢耶!完胜电脑!");}else if(x==y){System.out.println("彼此彼此,水平相当么~");}else{System.out.println("不幸输了,改日再和你比赛!");}}}开场界面进展一局游戏结果游戏最终结果的判断3、实验心得体会:3.1出现的问题及解决方案〔1〕在编译源文件时,出现了这么个问题这是一个编码的问题。

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

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:
System.out.println("我出拳: 石头");
break;
case 2:
System.out.println("我出拳: 剪刀");
break;
case 3:
System.out.println("我出拳: 布");
break;
}
int B = (int)((Math.random()*10)%3 + 1); //电脑产生随机数,进行出拳 switch(B){
case 1:
System.out.println("电脑出拳: 石头");
break;
case 2:
System.out.println("电脑出拳: 剪刀");
break;
case 3:
System.out.println("电脑出拳: 布");
break;
}
if(A==B){ //一局游戏判断输赢的过程System.out.println("哎呦,平局!再努力! ");
z++;
}
else if(((A==1)&(B!=3))||((A==2)&(B!=1))||((A==3)&(B!=2))){
System.out.println("不错嘛,赢了!");
x++;
z++;
}
else{
System.out.println("唉,输了,得加油啊!");
y++;
z++;
}
System.out.println("\n");
System.out.println("有种再来一局"+"\n"+"y/n");
m = shuzi.next();
}
System.out.println("游戏结束" );
System.out.println("对战的次数为"+z);
System.out.println("你的分数:" +x);
System.out.println("电脑的分数:"+y);
if(x>y){ //最终比游戏结果的判断System.out.println("噢耶!完胜电脑!");
}
else if(x==y){
System.out.println("彼此彼此,水平相当么~");
}
else{
System.out.println("不幸输了,改日再和你较量!");
}
}
}
开始界面
进行一局游戏结果
游戏最终结果的判断
3、实验心得体会:
3.1出现的问题及解决方案
(1)在编译源文件时,出现了这么个问题
这是一个编码的问题。

Java中采用Unicode字符编码,而选用UTF-8或UTF-16,而非GBK编码。

我们也用命令行来编译java文件时,由于编码格式的问题,这种时候就会出现错误编码GBK 的不可映射字符。

我们用的命令行敲的java命令默认是用本机的编码格式,所以才出现了GBK这个字眼。

解决这个问题当然是指定在编译时的编码格式。

(2)还遇到一个问题,java源文件能成功的通过编译。

但是,当执行java命令时,出现了“错误:找不到或无法加载主类”的问题。

既然编译时成功了,说明语法是没有错误的。

检查了下环境变量,发现路径配置并没有完全正确。

在classpath和path的变量值上,%java_home%\lib\dt.jar;%java_home%\lib\tools.jar以及%java_home%\bin语句前都没有“. ;”符号,因此执行java命令时,无法执行,出现了“错误:找不到或无法找到主类”这样的问题。

添加符号后,程序可正常执行。

3.2心得体会
1.通过对猜拳游戏的编写,深刻认识到了Java面向对象这一重要思想;
2.编译过程中,环境变量的设置,是很重要的。

了解的PATH、CLASSPATH的作用;
3.写代码的过程必须仔细,经常由于不细心导致代码出错;
4.应该多学多写多练,在实践中熟悉应用代码。

相关文档
最新文档