小练习——java控制流程语句做猜拳小游戏

首先我们来设计一下游戏规则和玩法,游戏规则也很简单:石头剪子布,石头吃剪刀,剪刀吃布,布包石头。程序运行后,玩家要选择出拳,随后程序自动出拳进行比较,赢家会得到1分,率先得到5分的一方胜利,玩家可以随时退出游戏。


所用技术: 循环和判断

                  控制台输入  Scanner

                  随机数   random

详细来了解一下Java的选择语句java循环语句及用法:

代码流程图:

Java的选择语句

[1] if单分支语法结构: 

   if(布尔表达式){
            语句块
 }
if语句对布尔表达式进行一次判定,若判定为真,则执行{}中的语句块,否则跳过该语句块。流程图如图所示:

[2]  if 双分支语法结构:
if(布尔表达式){
语句块1
}else{
      语句块2
}

当布尔表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。流程图如图所示:

[3]  if 多分支语法结构:语法结构:
if(布尔表达式1) {
        语句块1;
} else if(布尔表达式2) {
        语句块2;
}……
else if(布尔表达式n){
        语句块n;
} else {
        语句块n+1;
}

当布尔表达式1为真时,执行语句块1;否则,判断布尔表达式2,当布尔表达式2为真时,执行语句块2;否则,继续判断布尔表达式3······;如果1~n个布尔表达式均判定为假时,则执行语句块n+1,也就是else部分。流程图如图所示:

[4] switch 语句也称为 分支语句 ,其和 if 语句有点类似,都是用来判断值是否相等,但 switch 默认只支持 byte 、 short 、 int 、 char 这四种类型的比较, JDK8 中也允许 String 类型的变量做对比

java循环语句

【1】while 语法结构:
while (布尔表达式) {
            循环体;
}

在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会再开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
while循环结构流程图如图所示:

【2】do-while 语法结构:
do {
            循环体;
    } while(布尔表达式) ;

do-while循环结构会先执行循环体,然后再判断布尔表达式的值,若条件为真,执行循环体,当条件为假时结束循环。do-while循环的循环体至少执行一次。do-while循环结构流程图如图所示:

【3】for语法结构:
for (初始表达式; 布尔表达式; 迭代因子) {
          循环体;
}

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
初始化部分设置循环变量的初值
条件判断部分为任意布尔表达式
迭代因子控制循环变量的增减
for循环在执行条件判定后,先执行的循环体部分,再执行步进。
for循环结构的流程图如图所示:

控制台输入

Java控制台输入的三种实现方法:使用标准输入对象System.in,使用Scanner和使用字符流从控制台输入

使用控制台输入有三个步骤:

1、引入Scanner类

import java.util.Scanner;

2、创建Scanner对象

  Scanner scan = new Scanner(System.in);

3、接收控制台输入的数据

int n=sc.nextInt(); //接收整数类型输入

String n=sc.nextLine();//接收字符串

char n=(char)System.in.read(); //直接获取一个字符

char n=sc.next().charAt(0);//先从控制台接收字符串,再接收它的第一个字符

随机数

随机数:这个数在生成之前我们不确定这个数是多少,不可知

在java中依靠一个类:Math 类 帮助我们生成,这个类中有一个方法专门用来生成随机数:

Math.random() -------> [0.0,1.0)
Math.random()*6 ----->[0.0,6.0)
(int)(Math.random()*6)  ----->[0,5]
(int)(Math.random()*6) +1 ----->[1,6]

应用到程序中:

    int num1 = (int)(Math.random()*6) +1;
    int num2 = (int)(Math.random()*6) +1;
    int num3 = (int)(Math.random()*6) +1;

猜拳游戏完整代码:

import java.util.Random;
import java.util.Scanner;
 
public class MethodBlogs {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("\"石头剪刀布,电脑已就绪!游戏规则如下:和电脑猜拳\n" + " 1【石头】;2【剪刀】;3【布】\n");
        int comIntegral, plaIntegral;
        plaIntegral = comIntegral = 0;
 
        while (plaIntegral<5 | plaIntegral<5) {
            Random r = new Random();
            int comPuter = (int) (Math.random() * 3 + 1);
            System.out.println("请输入数字猜拳");
            int player = scan.nextInt();
            if (player==886){
                System.out.println("下次再见咯~");
                break;
            }
 
            if ((player > 0) & (player < 4)) {
                System.out.println("你的选择为:" + player);
                if (comPuter != player) {
                    if ((player - comPuter == -1) | (player - comPuter == 2)) {
                        plaIntegral += 1;
                        System.out.println("不错不错,竟然真的赢了!本次游戏,电脑出" + comPuter + "你出" + player);
                        System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
                        System.out.println("退出游戏请输入886,输入其他数字继续");
                        System.out.println("----------------------------------------\n");
                    } else {
                        comIntegral += 1;
                        System.out.println("还好我技高一筹,你败了!本次游戏,电脑出" + comPuter + "你出" + player);
                        System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
                        System.out.println();
                        System.out.println("退出游戏请输入886,输入其他数字继续");
                        System.out.println("----------------------------------------\n");
 
                    }
 
                }else if (comPuter == player) {
                    System.out.println("真是太有默契了,电脑出 " + comPuter + "你出" + player);
                    System.out.println("目前战况为: 电脑:" + comIntegral + " 分" + ",玩家 " + plaIntegral + " 分");
                    System.out.println("退出游戏请输入886,输入其他数字继续");
                    System.out.println("----------------------------------------\n");
                }
            }
            else {
                System.out.println("你输入的数字不合法,重新输入吧~");
                System.out.println();
                System.out.println("----------------------------------------\n");
            }
 
        }
 
        }
 
    }

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值