質問するログイン新規登録

質問編集履歴

5

追加

2018/09/19 09:00

投稿

masanori-
masanori-

スコア9

title CHANGED
File without changes
body CHANGED
@@ -77,6 +77,87 @@
77
77
 
78
78
  }
79
79
 
80
+
81
+
82
+
83
+ //S結果のメソッド/*
84
+ package janken;
85
+
86
+ import janken.Enums.S手;
87
+ import janken.Enums.S結果;
88
+
89
+ public class Janken {
90
+
91
+ /** Playerの手 */
92
+ private S手 playerHand;
93
+
94
+ /** CPUの手 */
95
+ private S手 cpuHand;
96
+
97
+ /**
98
+ * コンストラクタ
99
+ *
100
+ * Playerの手と、CPUの手をセット
101
+ * @param playerHand Playerの手
102
+ */
103
+ Janken(S手 value) {
104
+ this.playerHand = value;
105
+ this.cpuHand = this.getRandomHand();
106
+ }
107
+
108
+ /**
109
+ * 勝ち負け判定
110
+ *
111
+ * @return 結果
112
+ */
113
+ public S結果 judge() {
114
+
115
+ //勝ち
116
+ if((this.playerHand == S手.グー && this.cpuHand == S手.チョキ) ||
117
+ (this.playerHand == S手.チョキ && this.cpuHand == S手.パー) ||
118
+ (this.playerHand == S手.パー && this.cpuHand == S手.グー)) {
119
+ return S結果.勝ち;
120
+ }
121
+
122
+ //あいこ
123
+ if(this.playerHand == this.cpuHand) {
124
+ return S結果.あいこ;
125
+ }
126
+
127
+ //上記以外は負け
128
+ return S結果.負け;
129
+ }
130
+
131
+
132
+ /**
133
+ * PlayerとCPUの手を返却(表示用)
134
+ *
135
+ * @return PlayerとCPUの手を返却
136
+ */
137
+ public String getInputHand(){
138
+
139
+ return "Playerの手:" + this.playerHand + "、CPUの手:" + this.cpuHand;
140
+ }
141
+
142
+ /**
143
+ * ランダムの手を返却
144
+ *
145
+ * @return コンピューターの手
146
+ */
147
+ private S手 getRandomHand() {
148
+
149
+ // ランダムでグー、チョキ、パーを決定し返却
150
+ int hand = (int)(Math.random() * 3) + 1;
151
+ return S手.getEnum(hand);
152
+ }
153
+ }
154
+
155
+
156
+
157
+
158
+
159
+
160
+
80
161
  ```
81
162
 
82
163
  ### 補足情報(FW/ツールのバージョンなど)

4

文字修正

2018/09/19 09:00

投稿

masanori-
masanori-

スコア9

title CHANGED
File without changes
body CHANGED
@@ -28,19 +28,7 @@
28
28
 
29
29
 
30
30
 
31
- 追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
32
- 「//勝ち負け判定」の
33
- **
34
- if(result == S結果.勝ち) {
35
- winFlag = true;
36
- }
37
31
 
38
- if(winFlag =true && S結果.勝ち) {
39
- playerPt --;
40
- }
41
- **
42
-
43
- 場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
44
32
 
45
33
  根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
46
34
 
@@ -60,72 +48,34 @@
60
48
 
61
49
  ### 該当のソースコード
62
50
  ```
63
- public static void main(String[] args) {
64
51
 
65
- S結果 result = null;
66
- int playerPt = 0;
52
+ int lastWinner = 0;
67
- int cpuPt = 0;
68
- ** boolean winFlag = true;**
69
53
 
70
- //勝敗が決まるまで実施
71
- while(true) {
72
-
73
- // Player手を取得
54
+ //もし、playerが「勝ち」ならlastWinner=1フラグが立つ/*
74
- S手 playerHand = readPlayerHand();
75
- if(playerHand == null) {
55
+ if(result == S結果.勝ち) {
76
-
77
- // 未入力で終了
56
+ lastWinner = 1;
78
- return;
79
-
80
57
  }
81
-
82
- // 手をセット
83
- Janken janken = new Janken(playerHand);
84
-
85
- // 手を表示
86
- System.out.println(" → " + janken.getInputHand());
87
-
88
- // 勝ち負け判定
89
- result = janken.judge();
90
58
 
59
+ //もし、1のフラグかつ勝負の結果が勝ちならplayerは-1pt、そしてフラグをリセット/*
91
- if(result == S結果.あいこ) {
60
+ if(lastWinner == 1 && S結果.勝ち) {
92
61
 
93
- System.out.println("あいこでしょ!");
62
+ playerPt--;
94
- } else if (result == S結果.勝ち) {
63
+ lastWinner = 0;
95
64
 
96
- System.out.println("playerの勝ち");
97
- playerPt ++;
98
-
99
- } else if (result == S結果.負け) {
100
-
101
- System.out.println("cpuの勝ち");
102
- cpuPt ++;
103
-
104
- } else {
105
- break;
106
-
107
65
  }
108
- **
109
- if(result == S結果.勝ち) {
110
- winFlag = true;
111
- }
112
66
 
67
+ //もし、playerが「負け」ならlastWinner=2のフラグが立つ/*
113
- if(winFlag =true && S結果.勝ち) {
68
+ if(result == S結果.負け) {
114
- playerPt --;
69
+ lastWinner = 2;
115
70
  }
116
- **
117
- System.out.println("player" + playerPt + "対cpu" + cpuPt);
118
- if(playerPt >= 3) {
119
71
 
120
- System.out.println("player・・・");
72
+ //もし、2フラグで、かつ勝負の結果が負けならCPUは-1pt、そしてフラグをリセット/*
121
- break;
122
- } else if(cpuPt >= 3) {
73
+ if(lastWinner == 2 && S結果.負け) {
74
+
75
+ cpuPt--;
76
+ lastWinner = 0;
123
77
 
124
- System.out.println("playerの・・・");
125
- break;
126
-
127
78
  }
128
- }
129
79
 
130
80
  ```
131
81
 

3

文法の修正

2018/09/19 08:16

投稿

masanori-
masanori-

スコア9

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,49 @@
8
8
  ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
9
9
 
10
10
 
11
+
12
+ ■■■追加詳細■■■
13
+
14
+
15
+ 「2連続で勝利した場合、同時にその方に-1pt」
16
+ 例えば、
17
+ 1回戦目 playerが勝ち:CPUが負け スコア【1pt:0pt】
18
+ 2回戦目playerが勝ち:CPUが負け スコア【2pt:0pt】
19
+ しかしここでplayerが2連勝なので、-1pt スコア【1pt:0pt】
20
+ 3回戦目
21
+
22
+
23
+
24
+ というような流れの処理となるようにと作りたいです。
25
+
26
+ 2連勝して-1ptの処理が発生した後は、連勝のカウントをリセットし、続きを始めます。
27
+ 2連勝後にまた勝っても何もなくその後2連勝するとまた-1ptされ、その場合は一旦スコアが「player 3pt: CPU 0pt」となりますが、表示されるスコアは「player 2pt: CPU 0pt」となるようにしたいと考えております。
28
+
29
+
30
+
31
+ 追加処理のソースコードを、定義の場所 ** boolean winFlag = true;**と、
32
+ 「//勝ち負け判定」の
33
+ **
34
+ if(result == S結果.勝ち) {
35
+ winFlag = true;
36
+ }
37
+
38
+ if(winFlag =true && S結果.勝ち) {
39
+ playerPt --;
40
+ }
41
+ **
42
+
43
+ 場所(**はteratail上での目印でソースにはありません)に自分なりに加えてみましたが、コマンドプロンプトでコンパイルすると「 && のオペランド型が不正です」と出ました。
44
+
45
+ 根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
46
+
47
+
48
+ ■■■■■■■■■■■■■■
49
+
50
+
51
+
52
+
53
+
11
54
  なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
12
55
 
13
56
 
@@ -16,13 +59,13 @@
16
59
 
17
60
 
18
61
  ### 該当のソースコード
19
-
20
62
  ```
21
63
  public static void main(String[] args) {
22
64
 
23
65
  S結果 result = null;
24
66
  int playerPt = 0;
25
67
  int cpuPt = 0;
68
+ ** boolean winFlag = true;**
26
69
 
27
70
  //勝敗が決まるまで実施
28
71
  while(true) {
@@ -62,7 +105,15 @@
62
105
  break;
63
106
 
64
107
  }
108
+ **
109
+ if(result == S結果.勝ち) {
110
+ winFlag = true;
111
+ }
65
112
 
113
+ if(winFlag =true && S結果.勝ち) {
114
+ playerPt --;
115
+ }
116
+ **
66
117
  System.out.println("player" + playerPt + "対cpu" + cpuPt);
67
118
  if(playerPt >= 3) {
68
119
 
@@ -76,13 +127,8 @@
76
127
  }
77
128
  }
78
129
 
79
- // 結果を表示
80
- outputResult(result);
81
- }
82
130
  ```
83
131
 
84
-
85
-
86
132
  ### 補足情報(FW/ツールのバージョンなど)
87
133
 
88
134
  エディタはVSCodeを使用しています。

2

文法の修正

2018/09/19 04:06

投稿

masanori-
masanori-

スコア9

title CHANGED
File without changes
body CHANGED
@@ -4,9 +4,13 @@
4
4
  上記の内容の動作は完了しており、付け加える形として「2連続で勝利した場合、その方に-1pt」という処理を加えたいと考えております。
5
5
 
6
6
  下記はメインのメソッドだけを貼り付けさせて頂きました。
7
- //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
7
+ //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、
8
+ ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
8
9
 
9
10
 
11
+ なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
12
+
13
+
10
14
  どなたかよろしければ、回答をお願い致します。
11
15
 
12
16
 

1

文法の修正

2018/09/18 08:10

投稿

masanori-
masanori-

スコア9

title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
  上記の内容の動作は完了しており、付け加える形として「2連続で勝利した場合、その方に-1pt」という処理を加えたいと考えております。
5
5
 
6
6
  下記はメインのメソッドだけを貼り付けさせて頂きました。
7
- //勝ち負け判定のどこかに「2連続で勝利した場合、その方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
7
+ //勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、いったいどこにどんな処理を加えて良いのやらが分かりません。
8
8
 
9
9
 
10
10
  どなたかよろしければ、回答をお願い致します。