答えのじゃんけんコーディングプロセス0912

答えのじゃんけんコーディングプロセス0912

効果

ここに画像の説明を挿入

脳マップをダウンロード

https://cloud.189.cn/t/VJzu6jRvQ7Rb

ここに画像の説明を挿入

01脳マップをもとに授業を作成

クラスが必要

  • プレーヤー
  • コンピューター
  • 裁判,referee

クラスを作成する

ここに画像の説明を挿入

3つのクラス

テストファイル

プレーヤークラスの属性とメソッドを記述する

プレイヤークラス

public class Player {
    
    
    // 名字
    String name;
    // 得分
    int score;

    /**
     * 出拳方法
     */
    public void punches() {
    
    
        System.out.println("玩家出了一个拳");
    }
}

テストを受ける

public class test {
    
    
    public static void main(String[] args) {
    
    
        // 测试开始

        // 玩家对象
        Player zs = new Player();
        zs.punches();
    }
}

結果

玩家出了一个拳

コンピュータクラスの属性とメソッドを記述する

コードはプレーヤークラスのコードと大差ないので、直接コピーしてください

public class Computer {
    
    
    // 名字
    String name;
    // 得分
    int score;

    /**
     * 出拳方法
     */
    public void punches() {
    
    
        System.out.println("计算机出了一个拳");
    }
}

テスト

public class test {
    
    
    public static void main(String[] args) {
    
    
        // 测试开始

        // 玩家对象
        Player zs = new Player();
        zs.punches();

        // 计算机对象
        Computer pc = new Computer();
        pc.punches();
    }
}

結果

玩家出了一个拳
计算机出了一个拳

審判

定義

public class Referee {
    
    

    /**
     * 开始游戏
     * 用途:控制游戏流程
     */
    public void start() {
    
    
        System.out.println("让游戏开始吧");
    }
}

テスト

public class test {
    
    
    public static void main(String[] args) {
    
    
        // 测试开始

        // 玩家对象
        Player zs = new Player();
        zs.punches();

        // 计算机对象
        Computer pc = new Computer();
        pc.punches();

        // caipan对象
        Referee cp = new Referee();
        cp.start();
    }
}

結果

玩家出了一个拳
计算机出了一个拳
让游戏开始吧

ソースコード01

https://cloud.189.cn/t/7VRnyaMvMvAj

ビデオ01

https://www.ixigua.com/6871813006473298440?logTag=1kWy5BjWbX2BTRb5vH5d2

02審判のスタート方法の実現

脳マップ
ここに画像の説明を挿入

テストクラスの乱雑なコードをクリアする

判断のインスタンス化とstartメソッドの呼び出しのみを保持します

結果が正常に出力できるかどうかをテストします

startメソッドに実行プロセスを記述します

最初にプレースホルダーコードを記述します

/**
 * 裁判类
 */
public class Referee {
    
    

    /**
     * 开始游戏
     * 用途:控制游戏流程
     */
    public void start() {
    
    
        // 初始化选手
        System.out.println("玩家对象登场");
        System.out.println("电脑对象登场");

        // 获取出拳
        System.out.println("玩家出拳");
        System.out.println("电脑出拳");

        // 计数器变化
        System.out.println("计数器变化");

        // 胜负判断
        System.out.println("胜负判断");

        // 是否要继续
        System.out.println("要继续吗?");
    }
}

効果

玩家对象登场
电脑对象登场
玩家出拳
电脑出拳
计数器变化
胜负判断
要继续吗?

ビデオ02

https://www.ixigua.com/6871834964221133326?logTag=DP0I_im3_7KDCTTaWt3OD

03プレイヤーとコンピューター、プレイヤーの間のパンチを実現

プレイヤーパンチ

    /**
     * 出拳方法
     */
    public String punches() {
    
    
        System.out.println("请出拳:1-剪刀,2-石头,3-布(输入相应数字):");
        String quan = ipt.next();
        System.out.println("你出拳" + quan);
        return quan;
    }

プレーヤーはキーボードから入りパンチする

quan変数はキーボード入力を受け取ります

文字列型

このエントリの結果を返す

テストを受ける

データは正常に受信できます

ここに画像の説明を挿入

しかし、需要は

ここに画像の説明を挿入

2と入力して石を表示します

したがって、数字から文字列への印刷操作はまだ不足しています

分岐ステートメントを使用して完了することを検討してください

ビデオ03

04プレーヤーとコンピューター-コンピューター間のパンチを実現します

コンピュータのパンチ方法

コンピュータは乱数を使ってパンチします

ランダムに出力1 2 3 3データ

最初にランダムな小さな関数を書きます

1 2 3データ生成が達成できるかどうかをテストする

ここに画像の説明を挿入

コンピュータパンチ法で数を生成する

    public int punches() {
    
    
        Random random = new Random();
        int randNum = random.nextInt(3) + 1;
        return randNum;
    }

プレイヤーのパンチのデータ型を修正してください

コンピューターが整数を出力する

プレイヤーは文字列を与えます

データ型は統一する必要があります

プレーヤーのパンチの戻り値を整数の戻り値に変えてください

ビデオ04

https://www.ixigua.com/6871846165554725390?logTag=-GFlBc25qOnbCxvX8jHd3

05数字を文字列に

考えて、ここに出力する方法は?

パンチが2の場合は岩を出力し、パンチが1の場合ははさみを出力します

それを考慮することができます:

複数のブランチ

シンプルで失礼な文章


        // 需要,把1转换成剪刀,2转换成石头,3转换成布进行输出
        // 使用一个粗旷的方法来实现
        // 玩家出拳的转换
        if (player1Quan == 1) {
    
    
            System.out.println("你出拳:剪刀");
        } else if (player1Quan == 2) {
    
    
            System.out.println("你出拳:石头");
        } else if (player1Quan == 3) {
    
    
            System.out.println("你出拳:布");
        }
        // 电脑出拳的转换
        if (computer1Quan == 1) {
    
    
            System.out.println("电脑出拳:剪刀");
        } else if (computer1Quan == 2) {
    
    
            System.out.println("电脑出拳:石头");
        } else if (computer1Quan == 3) {
    
    
            System.out.println("电脑出拳:布");
        }
        System.out.println("虽然功能实现了,但是代码太罗嗦了,可以优化");

ビデオ05

https://www.ixigua.com/6871849136673522183?logTag=Zf5bwygPjJUJlZ8W5p4cS

06勝者の判断

ここに画像の説明を挿入

ブランチを使用して3つの状況を処理する

  • ネクタイ状況
  • 勝利
  • もうひとつは失敗

ビデオ06

https://www.ixigua.com/6871853339307409927?logTag=m7mTVIFUSjvOZ85QnXhoK

07ゲームループ

ここに画像の説明を挿入
ゲーム終了後、次のゲームかどうか尋ねます

ユーザーがyと入力した場合、ゲームを続行します

do{
    
    反复的游戏}while(键盘输入是否是y);

ビデオ07

https://www.ixigua.com/6871856414227169799?logTag=fBvij9VaaSASNdbjoKzKj

08ディスプレイの調整

  • カウンターチェンジ
  • プレイヤー固定名
  • コンピュータ名を選択
  • パンチする前にプレーヤーとコンピューターを表示
  • do ... whileループからwhileループ
  • 採点処理

コード

import java.util.Scanner;

/**
 * 裁判类
 */
public class Referee {
    
    

    /**
     * 开始游戏
     * 用途:控制游戏流程
     */
    public void start() {
    
    
        // scanner
        Scanner ipt = new Scanner(System.in);
        // 初始化选手
        Player player1 = new Player();
        // 玩家名字默认为王子
        player1.name = "王子";

        // 初始化电脑
        Computer computer1 = new Computer();
        // 给电脑起名字
        System.out.println("请选择对方角色(1 刘备,2 孙权,3 曹操)");
        int nameNum = ipt.nextInt();
        String computer1Name = "";
        switch (nameNum) {
    
    
            case 1:
                computer1Name = "刘备";
                break;
            case 2:
                computer1Name = "孙权";
                break;
            case 3:
                computer1Name = "曹操";
                break;
        }
        computer1.name = computer1Name;


        // scanner对象
        // 是否继续
        String is_continue;
        // 计数器
        int counter = 0;

        // 宣布对战
        System.out.println(player1.name + "  VS  " + computer1.name + "  对战");

        // 游戏循环:出拳,评判,是否再玩,再出拳,再评判,再问是否玩,do...while


        // do...while 转while....
        // 是否要继续
        System.out.println("要继续吗?y-继续");
        is_continue = ipt.next();

        while ("y".equals(is_continue)) {
    
    
            // 获取出拳,需要有返回值,用于提供裁判进行比较
            int player1Quan = player1.punches();
            int computer1Quan = computer1.punches();

            // 需要,把1转换成剪刀,2转换成石头,3转换成布进行输出
            // 使用一个粗旷的方法来实现
            // 玩家出拳的转换
            if (player1Quan == 1) {
    
    
                System.out.println("你出拳:剪刀");
            } else if (player1Quan == 2) {
    
    
                System.out.println("你出拳:石头");
            } else if (player1Quan == 3) {
    
    
                System.out.println("你出拳:布");
            }
            // 电脑出拳的转换
            if (computer1Quan == 1) {
    
    
                System.out.println("电脑出拳:剪刀");
            } else if (computer1Quan == 2) {
    
    
                System.out.println("电脑出拳:石头");
            } else if (computer1Quan == 3) {
    
    
                System.out.println("电脑出拳:布");
            }

            // 计数器变化
            counter++;

            // 胜负判断
            if (computer1Quan == player1Quan) {
    
    
                // 平局情况
                System.out.println("天哪,平局了");

            } else if (player1Quan == 2 && computer1Quan == 1 || player1Quan == 1 && computer1Quan == 3 || player1Quan == 3 && computer1Quan == 2) {
    
    
                // 胜利情况
                System.out.println("玩家胜利,电脑失败");
                player1.score += 1;
            } else {
    
    
                // 失败情况
                System.out.println("电脑胜利,玩家失败");
                computer1.score += 1;
            }

            // 是否要继续
            System.out.println("要继续吗?y-继续");
            is_continue = ipt.next();

            // 换行
            System.out.println();
            System.out.println();

        }
        ;

        System.out.println("一共比赛的次数:" + counter);
        System.out.println("玩家得分:" + player1.score);
        System.out.println("电脑得分:" + computer1.score);
    }
}

ビデオ08

https://www.ixigua.com/6871861896690172424?logTag=0CaNWCd2OZz_j0uU9iiSk

ソースファイル08

https://cloud.189.cn/t/iYfI3iyQzi63

説明

この方法は最適ではありません

理解を容易にするために、分解は非常に詳細です

コーディングプロセスを完全に理解したとき

より良い方法で書くことができます

概要

このプロジェクトは主に、複雑なプロジェクトを充実させる方法を練習します

そのような厄介なプロジェクトを見て、脳は非常に大きいかもしれません

しかし、あなたは分析し、それから分解し、そして空白を埋めることを学ぶ必要があります。

どんなに難しいことでも、分割して征服することができます

コーディングプロセス中に構造設計エラーが発生した

たとえば、whileループの構造を使用する必要があり、結果はdo ... while ...構造になります。

しかし影響はありません

近くのコードを調整するだけです

おすすめ

転載: blog.csdn.net/ifubing/article/details/108545389