答えのじゃんけんコーディングプロセス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 ...構造になります。
しかし影響はありません
近くのコードを調整するだけです