黑马程序员技术交流社区
标题:
石头剪刀布如何用JAVA来表示
[打印本页]
作者:
曹思敏
时间:
2013-5-30 14:22
标题:
石头剪刀布如何用JAVA来表示
/*问题1:童年的回忆是美好的;还记得小时候大家经常玩的石头、剪刀、布小游戏吗?
有两个人;分别是小明跟小红;;判断(A WINNER) & (B WINNER)
怎么用JAVA来表达??
*/
public class Winner
{
public static void main(String[] args)
{
char A = "小明";
if (A=="石头") & (B=="剪刀")
System.out.println("A");
else if (A=="剪刀") & (B=="布")
System.out.println("A");
else if (A=="布") & (B=="石头")
System.out.println("A");
else
System.out.print("B");
}
}
编译错误;如下图1-3;求助如何用程序编译通过并生成.class文件。
1-3.jpg
(90.91 KB, 下载次数: 0)
下载附件
2013-5-30 14:20 上传
作者:
夜默
时间:
2013-5-30 14:30
这是我写的一个猜拳小游戏,程序很简单。有需要改进的地方请指出,互相帮助...import java.util.Scanner;
/*
* 猜拳游戏
* 巩建
* 程序中已经输入了游戏规则,不能向人那样灵活。
* 了解规则,很容易就成功!
*/
public class game {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-------欢迎进入游戏世界-------");
System.out.println();
System.out.println("***************************");
System.out.println("\t**猜拳开始**\t\t");
System.out.println("***************************");
System.out.println();
System.out.println("出拳规则:1.石头2.剪刀3.布");
System.out.println("对战人物:1.修罗2.地狱犬3.啸月天狼4.神秘人");
System.out.println("\t三局两胜制");
System.out.println();
System.out.println("***************************");
Scanner a =new Scanner(System.in);
String answer="y";
do{
System.out.print("请输入您想到对战的人物:\t");
int renwu =a.nextInt();
if(renwu==1){
xiuluo q=new xiuluo();
q.shi();
}
else if(renwu==2){
diyuquan w=new diyuquan();
w.jian();
}
else{
xiaoyue e=new xiaoyue();
e.xiao();
}
System.out.println("是否继续?y/n");
answer=a.next();
}while(answer.equals("y"));
if(answer!="y"){
System.out.println("再见,希望您下次来玩!");
}
}
}
import java.util.Scanner;
public class daomei {
public void dao(){
System.out.println("您选择的对战人物是神秘人!");//必赢
Scanner a=new Scanner(System.in);
for(int i=0;i<3;i++){
System.out.println("请输入您想要出什么!");
int b=a.nextInt();
if(b==1){
System.out.println(" 恭喜您!您的石头碰到了可怜的小剪刀!");
}
else if(b==2){
System.out.println("恭喜您,您碰见了布!");
}
else{
System.out.println("恭喜您,您的布包住了石头!");
}
}
System.out.println();
System.out.println("根据游戏规则,您挑战成功!");
}
}
import java.util.Scanner;
public class diyuquan {
public void jian(){
System.out.println("您选择的对战人物是地狱犬!");//一胜一负一平
Scanner a=new Scanner(System.in);
for(int i=0;i<3;i++){
System.out.println("请输入您想要出什么!");
int b=a.nextInt();
if(i==0){
System.out.println("恭喜您!您赢了。");
}
else if(i==1){
System.out.println("哎呦、哎呦,冤家路窄。平了....");
}
else{
System.out.println("对不起,您输了!");
}
}
System.out.println();
System.out.println("根据游戏规则,您一胜一负一平,挑战失败!");
}
}
import java.util.Scanner;
public class xiaoyue {
public void xiao(){
System.out.println("您选择的对战人物是啸月天狼!");//随机
Scanner a=new Scanner(System.in);
int k=0;
for(int i=0;i<3;i++){
System.out.println("请输入您想要出什么!");
int b=a.nextInt();
if(b==1){//int number = (int)(Math.random()*100)产生100以内的随机数
int s=(int)(Math.random()*100);
if(s>50){
System.out.println("恭喜您!您的石头碰到了可怜的小剪刀!");
k++;
}
else
System.out.println("对不起,您输了,石头是可以被布包容的哦!");
}
else if(b==2){
int s=(int)(Math.random()*100);
if(s>80){
System.out.println("恭喜您,您碰见了布!");
k++;
}
else
System.out.println("对不起,您输了,剪刀碰到石头是会损坏的!");
}
else{
int s=(int)(Math.random()*100);
if(s>90){
System.out.println("恭喜您,您的布包住了石头!");
k++;
}
else
System.out.println("对不起,您输了,您的布再大,也会被减坏的!");
}
}
System.out.println();
if(k>1){
System.out.println("根据游戏规则,您挑战成功!");
}
else
System.out.println("根据游戏规则,您挑战失败!");
}
}
import java.util.Scanner;
public class xiuluo {
public void shi(){
System.out.println("您选择的对战人物是修罗!");//必输
Scanner a=new Scanner(System.in);
for(int i=0;i<3;i++){
System.out.println("请输入您想要出什么!");
int b=a.nextInt();
if(b==1){
System.out.println("对不起,您输了,石头是可以被布包容的哦!");
}
else if(b==2){
System.out.println("对不起,您输了,剪刀碰到石头是会损坏的!");
}
else{
System.out.println("对不起,您输了,您的布再大,也会被减坏的!");
}
}
System.out.println();
System.out.println("根据游戏规则,您挑战失败!");
}
}
作者:
萌小子
时间:
2013-5-30 15:35
本帖最后由 王盟盟 于 2013-5-30 16:07 编辑
1、对字符串判断是否相等应该用equals()
2、与运算符应该是&&,而不是&
3、你应该把人物包装成一个javabean,有一个属性表示出的拳。
4、测试函数里可以有一个线程来进行游戏,并有一个变量来判断输赢
做了一个剪刀例子,你参考下吧,有不足的也可以给我提出来
package CaiQuan;
import java.util.Random;
public class CaiQuan {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Thread(new Test()).start();
}
}
class Test implements Runnable
{
String name[]={"布","剪刀","石头"};
Person ming,hong;
int number,pingJu;//number表示共进行了多少局,pingJu表示平局多少次
public Test()
{
ming=new Person("小明");
hong=new Person("小红");
}
public void run() {
while(ming.getWinNum()<5&&hong.getWinNum()<5)
{
//设置小明出的拳
ming.setStatu(name[new Random().nextInt(3)]);
//设置小红出的拳
hong.setStatu(name[new Random().nextInt(3)]);
if((ming.getStatu().equals("布")&&hong.getStatu().equals("石头"))||
(ming.getStatu().equals("石头")&&hong.getStatu().equals("剪刀"))||
(ming.getStatu().equals("剪刀")&&hong.getStatu().equals("布")))
{
ming.setWinNum(ming.getWinNum()+1);
System.out.println("本次小明赢了==="+"小明出的是:"+ming.getStatu()+"===小红出的是:"+hong.getStatu());
number++;
}
if((hong.getStatu().equals("布")&&ming.getStatu().equals("石头"))||
(hong.getStatu().equals("石头")&&ming.getStatu().equals("剪刀"))||
(hong.getStatu().equals("剪刀")&&ming.getStatu().equals("布")))
{
hong.setWinNum(hong.getWinNum()+1);
System.out.println("本次小红赢了==="+"小红出的是:"+hong.getStatu()+"===小明出的是:"+ming.getStatu());
number++;
}
if(ming.getStatu().equals(hong.getStatu()))
{
System.out.println("本次平手;他们出的都是"+ming.getStatu() );
pingJu++;
number++;
}
}
if(ming.getWinNum()==5)
{
System.out.println("本局小明赢了");
}
if(hong.getWinNum()==5)
{
System.out.println("本局小红赢了");
}
System.out.println("本局一共猜了"+number+"局,平"+pingJu+"局");
System.out.println("小明赢了"+ming.getWinNum()+"局");
System.out.println("小红赢了"+hong.getWinNum()+"局");
}
}
class Person {
private String name;
private String statu;
private int winNum;
public int getWinNum() {
return winNum;
}
public void setWinNum(int winNum) {
this.winNum = winNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatu() {
return statu;
}
public void setStatu(String statu) {
this.statu = statu;
}
public Person(String name) {
this.name = name;
}
public Person() {
}
}
复制代码
下面是运行结果:
本次小明赢了===小明出的是:剪刀===小红出的是:布
本次小明赢了===小明出的是:剪刀===小红出的是:布
本次小明赢了===小明出的是:石头===小红出的是:剪刀
本次小红赢了===小红出的是:石头===小明出的是:剪刀
本次小红赢了===小红出的是:剪刀===小明出的是:布
本次平手;他们出的都是布
本次平手;他们出的都是石头
本次小红赢了===小红出的是:布===小明出的是:石头
本次平手;他们出的都是布
本次小红赢了===小红出的是:剪刀===小明出的是:布
本次小红赢了===小红出的是:石头===小明出的是:剪刀
本局小红赢了
本局一共猜了11局,平3局
小明赢了3局
小红赢了5局
复制代码
作者:
Super_Class
时间:
2013-5-30 16:07
char A = "小明";//这里明显出错。不能讲String类型的转换成char类型的
if(A == "石头")&(B =="剪刀") 优先级的问题需要把条件整个都括起来
作者:
First
时间:
2013-5-30 16:45
本帖最后由 First 于 2013-5-30 16:48 编辑
楼主:
首先
char A = 这一行就没通过编译啊, 要改为String A = 。 不过最后是定义单独的类,毕竟是2 个 玩家
之后,玩这个游戏是不是要有2个 Player 呢? 不然 要怎么比呢? 是不是啊, 因此,你还需要定义2个player来比较。
最后呢, 你的比较方法 比较的应该是 2个player的动作,不是2个player ,所以 请不要写成 A == , 之类的。
尽管这么说,还是没有很好的表达我的观点。 所以呢,就写个例子,楼主尽请观看
package test;
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Player p1 = new Player("playerA", Pos.ROCK);
Player p2 = new Player("playerB", Pos.SCISSOR);
result(p1,p2);
}
public static void result(Player p1,Player p2){
Pos pos1 = p1.getP();
Pos pos2 = p2.getP();
if(pos1==pos2)
System.out.println("deuce");
else if(pos1.next() == pos2)
System.out.println("winner: " + p1.getName());
else if(pos2.next() == pos1)
System.out.println("winner: " + p2.getName());
}
}
class Player{
String name;
Pos p = Pos.ROCK;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Pos getP() {
return p;
}
public void setP(Pos p) {
this.p = p;
}
Player(String name, Pos p){
this.name = name;
this.p = p;
}
}
enum Pos{
ROCK {
@Override
public Pos next() {
// TODO Auto-generated method stub
return SCISSOR;
}
},
PAPER {
@Override
public Pos next() {
// TODO Auto-generated method stub
return ROCK;
}
},
SCISSOR {
@Override
public Pos next() {
// TODO Auto-generated method stub
return PAPER;
}
};
public abstract Pos next();
}
复制代码
作者:
残影
时间:
2013-5-30 23:21
char A = "小明";这里应该定义string类型,然后if条件是在()里面的,其他改过了再编译下试试,话说上面高手们贴的代码好牛,哈哈,
作者:
刘胜寒
时间:
2013-5-31 00:48
心头有种蛋蛋的忧桑。。。
好久没来回帖看帖了。。。
希希版主都生气了。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2