packagegl;
importjava.util.*;
public class kaishi {
Scanner input = new Scanner(System.in);
/**
* 定义属性
*/
static Person person;//甲方
Computer computer;//乙方
int count;//对战次数
/**
* 初始化方法
*/
public void Initial(){
person = new Person();
computer = new Computer();
count = 0;
}
/**
* 游戏头及规则、选择对手
*/
public void Show(){
System.out.println("-----------欢迎进入游戏世界-----------");
System.out.println("\t******************");
System.out.println("\t** 猜拳,开始**");
System.out.println("\t******************");
System.out.println("\n出拳规则:1.剪刀2.石头3.布");
System.out.print("请选择对方角色:(1.刘备2.孙权3.曹操):");//选择对方角色intnum = input.nextInt();
switch(num){
case 1:
System.out.println("你选择了刘备对战");
break;
case 2:
System.out.println("你选择了孙权对战");
break;
case 3:
System.out.println("你选择了曹操对战");
break;
}
}
/**
* 开始游戏
*/
public void Start(){
// System.out.print("要开始吗?(y/n)");
// String answer = input.next();
intperFirst;//用户出拳
intcompFirst;//计算机出拳
while(true){//出拳
if(person.score==2 || computer.score==2)
break;
perFirst = person.showFirst();
compFirst = computer.showFirst();
if((perFirst == 1 &&compFirst == 1)||(perFirst == 2 &&compFirst == 2)||(perFirst
== 3 &&compFirst == 3)){
System.out.println("结果:和局,真衰!嘿嘿,等着瞧吧!\n");//平局
}else if((perFirst == 1 &&compFirst == 3) || (perFirst == 2 &&compFirst == 1) ||
(perFirst == 3 &&compFirst == 2)){
System.out.println("结果:恭喜,你赢了!"); //用户赢
person.score++;
}else{
System.out.println("结果说:^_^,你输了,真笨!\n"); //计算机赢computer.score++;
}
count++;
}
}
public static void main(String[] args) {
kaishi s=new kaishi();
s.Initial();
System.out.println(s.count);
s.Show();
s.Start();
if(person.score == 2)
System.out.println("三局两胜恭喜你赢了!");
else
System.out.println("不好意思,你输了两局。");
}
}
packagegl;
importjava.util.*;
public class Person {
Scanner input = new Scanner(System.in);
/**
* 定义属性
*/
String name ;
int score;
/**
* 人的出拳方法
*/
publicintshowFirst(){
System.out.print("请出拳:1.剪刀2.石头3.布(请输入相应数字:)"); intnum = input.nextInt();
switch(num){
case 1:
System.out.println("你出拳: 剪刀");
return 1;
case 2:
System.out.println("你出拳: 石头");
return 2;
case 3:
System.out.println("你出拳: 布");
return 3;
default:
System.out.println("输入有误,请重新输入:");
return 0;
}
}
}packagegl;
importjava.util.*;
public class Computer {
Scanner input = new Scanner(System.in);
/**
* 类的属性
*/
String name;
int score;
/**
* 计算机出拳方法
*/
publicintshowFirst(){
intnum = (int)(Math.random() * 10 % 3 + 1); switch(num){
case 1 :
System.out.println("电脑出拳:剪刀"); return 1;
case 2 :
System.out.println("电脑出拳:石头"); return 2;
case 3 :
System.out.println("电脑出拳:布");
return 3;
default:
System.out.print("输入有误,请重新输入:"); return 0;
}
}
}
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
这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。 下面的代码会实现一个猜拳游戏,让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。 代码实现: #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:
幼儿园中班游戏教案:猜拳游戏 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.当游戏底板上没有相互克制的卡片时,游戏结束。
吉林省经济管理干部学院 吉林经济职业技术学院 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/c112304497.html,bel Lf Lr, Ls //定义和创建各标签 e.MenuBar Mbbar //定义和创建主菜单 f.Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项 g.Toolkit toolKit
南华大学计算机科学与技术学院实验报告 (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人机猜拳小游戏代码 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+"^_^你赢了!"); } }
第一个文件: 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/c112304497.html,="刘备"; break; case 2:https://www.wendangku.net/doc/c112304497.html,="孙权"; break; case 3:https://www.wendangku.net/doc/c112304497.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人机猜拳 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:
摘要 面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。 作为一种新的的编程语言,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’ mightiness. 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猜拳小游戏程序设计实验报告Java程序设计实验报告 班级: 学号: 姓名: 实验题目:猜拳小游戏 实验要求: 用java编写一个人机对战的猜拳小游戏。人选择性出拳,电脑随机出拳,判断 输赢,记录输赢情况。有简单的操作界面。 实验内容: 1、问题分析过程: (1)首先分析猜拳游戏本身的玩法: 人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。 (2)用面向对象的思想来分析: 在游戏过程中有几个对象组成 人 电脑 游戏规则 抽象出3个类:Person、Computer、Game Person类有哪些属性和行为呢, 属性:名字name,输赢次数(比分)score 行为:出拳ShowFirst() 选择性 Computer类有哪些属性和行为呢, 属性:名字name,输赢次数(比分)score
行为:出拳showFist() 随机 Game类有哪些属性和行为呢, 属性:游戏的双方(person、computer)、对战局数count 行为:产生角色initial()、游戏规则startGame()、显示比赛结果showResult()、统计 比赛结果calcResul() 2、主要实现代码: import java.util.*; public class StartGame { public static void main(String[]args){ Game start = new Game();//实例化游戏类 start.initial(); //调用初始化方法 start.startGame(); //调用游戏开始方法 start.showResult(); //调用游戏结果显示方法 } } import java.util.*; public class Person { String name;//名字属性 int score;//积分属性 //出拳方法 public int showFist(){ System.out.print("\n请出拳:1.剪刀2.石头3.布(输入相应数字):"); Scanner input = new Scanner(System.in);
C语言猜拳游戏代码及分析 猜拳游戏需求分析说明书 1.引言 1.编写目的 小时候,我们喜欢以猜拳来赢得奖励。 现在,我们希望能开发一个猜拳的游戏。 2.定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规 定文档所需具有的条件或权能。而且其很强的交互性及 简单易行性,可以让人在很短时间内熟悉它的操作方法,不论用户文化水平如何,都会很轻松的学会使用它。2.任务概述 1.目标 2.用户的特点 由于本程序简单易操作,交互性好,对用户没什么 特别要求。一般用户经过几分钟练系都可以熟悉本系统 的规则。 3.系统功能示例
3.需求细则 1. 对功能的规定 1.1 界面友好 属性:必选 描述:用户的一些操作前后做出一些必要的提示或确认。所有完成的功能都需要友好,例如: ● 增加失败提示; ● 删除失败和成功提示、删除前的确认; ● 修改失败和成功提示、修改前/后的确认; ● 查找失败提示、查找成功的确认; ● 退出系统时,要提示是否退出; ● 其它方面的界面问题;
1.2 用户注册 属性:必选 描述:登录界面可以用户注册,注册信息包含用户名和密码,例如: ● 不能使用已经存在的用户名 ● 密码不能少于6个字符 1.3 用户登录 属性:必选 描述:用户通过登录界面进行登录,必须输入正确的用户名和密码方可进入系统,例如: ● 提示输入用户名 ● 提示输入密码
● 用户名和密码验证,都符合则进入系统,不然回到 第一步,超过三次登录,则提示登录次数超过三次,退 出系统 1.4 开始游戏 属性:必选 描述:金额大于1的用户可以开始游戏 ● 下注:提示用户下注的金额数 ● 猜拳:(必须先下注,如果用户下注金额小于等于0,不能进行游戏)与电脑进行猜拳游戏,如果猜输了,扣除你的金额(由下注决定),胜利将随机获得1~5倍的下注 金额奖励 n提示:电脑随机出拳,胜利奖励也是随机的,例如: n随机获得1~5数字代码:
第12章 指导学习:人机猜拳 ◇本章工作任务 完成人机互动版猜拳游戏的开发 ◇本章技能目标 会定义类,描述类的属性和方法 会创建和使用对象 会使用包组织Java工程
12.1 复习串讲 12.1.1 难点突破 表12-1中列出了本学习阶段的难点,这些技能你都掌握了吗? 表12-1 难点突破记录 难点感到疑惑的地方突破方法是否掌握 二重循环结构 类和对象之间的差异 方法定义 方法的返回值 如果还存在疑惑,请写下你对这个技能感到疑惑的地方。我们可以通过教材复习,或者从网上查找资料学习,或者和同学探讨,或者向老师请教等方法突破这些难点。知道这个技能已经掌握,在“是否掌握”一栏中画上“√”。这些技能是学习后面技能的基础,一定要在继续学习前全部突破。 如果在学习中遇到其他难点,也请填写在表中。 12.1.2 知识梳理 下面我们对技能点做一梳理,以知识体系图的形式给出。在下面的知识体系图中,?图标表示我们已经学过的知识;?图标表示部分学过或者学过相关知识,但需要巩固和深化;?图标是需要通过自学学习或了解的知识;?图标表示将在后续章节学习的知识。 1.知识梳理:二重循环 图12.1展示了二重循环的知识体系图 对于二重循环,我们主要学习了几种循环结构单一的二重嵌套使用,如while结构中套whille结构,for结构中套for结构,相互之间的嵌套循环在实际工作中也是常见的。 关于跳转语句continue和break在二重循环中的应用,continue跳出当前循环的当次循环,break跳出当前循环,进入到上级循环。
图12.1 二重循环的知识体系图 2.知识梳理,初始Java的类 图12.2展示了初学者应该理解的类的知识体系图 图12.2 初始类的概念 对象是存在的具体实体,对应于现实世界的实物,具有明确的状态和行为。类是对具有相同状态和行为的对象的抽象,对象的状态和行为被封装在类中,在OOP中,状态称为属性,行为称为方法。 定义类的方法,首先要考虑方法的数据类型,其次就是方法的返回值,return语句后的数据类型一定与方法的类型相符合。 调用类的方法,如果同属一个类,直接使用方法名调用。如果调用其他类的方法,首先要先实例化对象,使用“对象名.方法名”调用。 12.2 综合练习 12.2.1 任务描述 完成人机猜拳互动游戏的开发。
一:划拳: 划拳又叫豁拳、拳、猜拳、拇战,即饮酒时两人同时伸出手指并各说一个数,谁说的数目跟双方所伸手指的总数相符,谁就算赢,输的人喝酒。此乃国古传至今仍时尚流行的饮酒游戏,它增添酒兴,烘托喜庆。 二:划拳的方法和种类: 最常见的喝酒划拳就是“哥俩好”了,一般喝酒的人都会。 为了把快乐进行到底,某人还专门研究了一番“哥俩好”划拳术,编出了一套脍炙人口的划拳口诀。某日,在一次朋友聚会上,大家兴致极高,提议划拳。“五魁手啊,六六顺啊……”“骑(七)个烂摩托啊,八方找感觉啊……”他紧跟着脱口而出。大家一听乐坏了,继续与他划拳。他就扯开嗓门喊开了:“淋(零)巴结发炎,四环素消炎!”随后,他还把唐诗宋词也运用到了划拳当中:“三十功名尘与土,八千里路云和月”、“两个黄鹂鸣翠柳,一行白鹭上青天”…… 这位朋友的划拳声让大家笑得前仰后翻,其他桌的客人也忍不住加入到划拳的队伍中来,整个场面好不热闹! 除了这种很常见的划拳外,还有很多的划拳游戏也非常流行,也非常有趣。 拳术“七种武器” 开场:(双方边作揖边念)好久不见,酒量见长。 比划开始:人在江湖漂呀,哪有不喝高呀。三杯喝倒你呀,五杯喝倒你呀……(本拳法简单,人人皆可玩,且容易渲染气氛,大伙不妨一试。) 1.“猜拳”:又叫猜枚,俗称“十五、二十”,非常流行。游戏规则十分简单,对饮两人相对同时伸手出指(单手能出的数字为0—5),口中报一数字,与双方伸指数目之和符合者胜,败者罚饮,相同继续。(猜拳的特点是非常热闹。) 2.“真心话和大冒险”:就是猜拳之后输的那个人要选择真心话或者大冒险。真心话就是可以让在座的任何一个人问任何问题(哪怕很隐私的都可以),都必须如实回答。大冒险就是要被在座的人指使去做一件事情,类似跟陌生人说“他妈的、爱你”之类的话,是一个玩人的好招数。 3.“剪刀、石头、布”:最普通、最流行而又历史最悠久的游戏玩法,不一定要在酒吧,在任何地方都可以玩。如果这个游戏你都不会,那你的童年实在是可怜啊! 4.“傻瓜拳”:两人同时出拳(剪刀、石头、布),如果相同,则喊“他傻瓜”;如甲方赢,乙方输,则甲喊“你傻瓜”,乙喊“傻瓜”,反之亦然,谁喊错则喝酒。(此游戏好玩之处在于考你的反应速度,越喊得快,越容易出错。 5.“蜜蜂拳”:两只小蜜蜂呀,飞到花丛中呀,飞呀,飞呀——嘿!石头,剪刀、布,然后猜赢的一方就做打人耳光状,左一下,右一下,同时口中发出“啪、啪”两声,输方则要顺手势摇头,作挨打状,口喊“啊、啊”。如果猜和了,就要做出亲嘴状还要发出两声相似的配音。动作及声音出错则喝酒。 6.“青蛙落水”:一只青蛙一张嘴,两只眼睛四条腿,跌落水,dump(青蛙落水的声音);两只青蛙两张嘴,四只眼睛八条腿,听候落水,dump,dump;三只青蛙三张嘴,六只眼睛十二条腿,听候落水,dump,dump ,dump;四只青蛙……如此类推,每人说一句,以逗号
package 猜拳游戏; import java.util.*; public class game2 { public static void main(String[] args){ Scanner in=new Scanner(System.in); Random on=new Random(); String Marks="拳头"; String Marks2="拳头"; int i=0; int j=0; int z=0; do{ System.out.println("请出拳:(1.布2.剪刀3.石头)"); int number=in.nextInt(); int ran=on.nextInt(3); int rans=ran+1; if(number==rans){ z=z+1; }else{ if(number-rans==1||number-rans==-2){ i=i+1; z=z+1; }else{ j=j+1; z=z+1; } } switch(number){ case 1: Marks="布"; break; case 2: Marks="剪刀"; break; case 3: Marks="石头"; break; } switch(rans){ case 1: Marks2="布"; break; case 2: Marks2="剪刀";
break; case 3: Marks2="石头"; break; } if(number==rans){ System.out.print("你出的是"+Marks+" 电脑出的是"+Marks2+" 平局"+"\n"); }else{ if(number-rans==1||number-rans==-2){ System.out.print("你出的是"+Marks+" 电脑出的是"+Marks2+" 你赢了"+"\n"); }else{ System.out.print("你出的是"+Marks+" 电脑出的是"+Marks2+" 你输了"+"\n"); } } }while(i!=2&&j!=2); System.out.print("总共玩了"+z+"局"+"赢了"+i+"局"+"输了"+j+"局"+"平了"+(z-i-j)+"局"); } }
import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; publicclass Test extends JFrame { int sys = 0; int my = 0; boolean flag = false; boolean flag_very = false; JPanel jp1 = new JPanel(); JPanel jp2 = new JPanel(); JPanel jp3 = new JPanel(); JButton jb1 = new JButton("开始"); JButton jb2 = new JButton("石头"); JButton jb3 = new JButton("剪刀"); JButton jb4 = new JButton("布"); JButton jb5 = new JButton("系统出拳"); //JButton jb6 = new JButton("结束"); JLabel jl = new JLabel("结果"); public Test(){ this.setBounds(400, 500, 500, 500); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); jp1.add(jb5); jp2.add(jb2); jp2.add(jb3); jp2.add(jb4); //jp2.add(jb6); jp2.add(jb1); this.add(jp1,"North");