/*猜数字游戏,这个游戏设计到GuessGame 和Player两个类对象,game会产生0-9之间的随机数
三个player会猜测0-9的随机数,三个player产生的随机数与game产生的进行比较,如果又一个猜对
则输入,如何没有猜对的进入循环,直至猜对。
*/
/*
思路:先创建player类,类中有猜测数字的属性和猜测的方法,猜测方法调用后,属性改变,
此对象猜测的数字更改
之后创建GuessGame类,类中创建三个player对象,创建一个游戏开始的方法
方法内创建一个接收猜测数字的变量和一个猜测正误的变量
方法内产生游戏需要猜测的随机数,与玩家猜测的相对比
当猜对时,猜测正误的变量变为true,当三个玩家有一个猜对的时候,输出谁猜对,结束循环,
若没有猜对的继续循环直至猜对。
创建一个测试类,调用游戏类的gg.startGame()方法
*/
public class Demo8
{
public static void main(String[] args)
{
GuessGame gg=new GuessGame();
gg.startGame();
}
}
class GuessGame //
{
Player p1=new Player();//创建三个玩家的对象
Player p2=new Player();
Player p3=new Player();
public void startGame(){
int guess1=0; //创建三个变量用来接收三个玩家猜测的数
int guess2=0;
int guess3=0;
boolean guessRight1=false; //创建三个变量来接收玩家猜测的正误
boolean guessRight2=false;
boolean guessRight3=false;
int num=(int)(Math.random()*10);
System.out.println("随机数是"+num);
while(true){
p1.guess();
p2.guess();
p3.guess();
guess1=p1.number;
System.out.println("p1猜测的是"+p1.number);
guess2=p2.number;
System.out.println("p3猜测的是"+p2.number);
guess3=p3.number;
System.out.println("p2猜测的是"+p3.number);
if(p1.number==num){
guessRight1=true;
}
if(p2.number==num){
guessRight2=true;
}
if(p3.number==num){
guessRight3=true;
}
if(guessRight1||guessRight2||guessRight3){
System.out.println("Player one got it right?"+guessRight1);
System.out.println("Player two got it right?"+guessRight2);
System.out.println("Player three got it right?"+guessRight3);
break;
}
else{
System.out.println("you will try again");
}
}
}
}
class Player
{
int number;
public void guess(){
number=(int)(Math.random()*10);
System.out.println("I guess the number is "+number);
}
}
分析代码题:此题考得是,每次new的都是一个新的对象,对象里的属性和方法互不影响,对象一的属性加1,但是对象二的属性并没有变化
public class Mix4 {
int counter = 0 ; //定义一个计数器
public static void main (String [] args ){
int count = 0; //再定义一个计数器
Mix4 [] m4a = new Mix4[20]; //定义一个MIX4类的数组,长度为20,名字叫m4a
int x = 0;
while (x<9){
m4a[x] = new Mix4 (); //将新建的一个MIX4加入到m4a[x](x刚开始为0)数组中
m4a[x].counter = m4a[x].counter +1; //将m4a[x]中的放着的MIX4类的计数器加一 ,因为每次调用m4a[x].counter时候每个对象counter的初始值都为0,所以打印出来的counter总为1
count = count +1; //COUNT加1
count = count + m4a[x].maybeNew(x); /调用自己的meybeNew()方法,将count与meybeNew()的返回值1或者0相加
x = x+1; //循环一次,x+1
}
System.out.println (count + " " + m4a[1].counter);
}
public int maybeNew(int index ) { //这个方法是将传入的x的值与5比较,比5小,返回1,同时将counter的值+1,因为每次调用m4a[x].counter时候总是会想将counter的值设为0,所以打印出来的counter总为1,大于等于5则返回0
if (index <5){
Mix4 m4 = new Mix4 ();
m4.counter = m4.counter + 1;
return 1 ;
}
return 0;
}
}
五、面向对象练习——猜数字
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 《JavaScript 面向对象编程指南》中第4章,章节练习题4: 在String( )构造器不存在的情况下自定义...
- HTML 学习笔记 May 11,2017 构造函数、成员函数详解、object类、闭包、成员函数再说明、聪明的猪...
- 【练习题】01.类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100。定义一个类对A类的成员变量v进行...