質問編集履歴

1

コード部分の表記の仕方を変更しました。

2021/01/18 00:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  お世話になります。初めて質問させていただきます。質問の仕方など分かりにくいかもしれませんが、どうぞよろしくお願いいたします。
2
2
 
3
- 超初心者でPythonで参考書を読みながら数当てゲームを作っています。ゲーム自体のプログラムは本に書いてあった通りのものに少しだけ自分で加えた部分もあるのですが、思った通りに作動しました。ですが、その次のセクションでゲームをウィンドウに表示する段階になって、本の通りにコードを書き足していったのですが、自分で加えた部分のコードとの合わせ方がまずかったようで、思うように作動しません。色々と自分でどこが間違っているのかを試してみたのですが、自力で発見するのは無理だと判断しこちらに質問させていただく事にしました。
3
+ 超初心者でPythonで参考書を読みながら数当てゲームを作っています。ゲーム自体のプログラムは本に書いてあった通りのものに少しだけ自分で加えた部分もあるのですが、思った通りに作動しました。ですが、その次のセクションでゲームをウィンドウに表示する段階になって、本の通りにコードを書き足していったのですが、自分で加えた部分のコードとの合わせ方がまずかったようで、思うように作動しません。本に書いてある部分のみであれば正常に作動します。色々と自分でどこが間違っているのかを試してみたのですが、自力で発見するのは無理だと判断しこちらに質問させていただく事にしました。
4
4
 
5
5
 
6
6
 
@@ -8,25 +8,249 @@
8
8
 
9
9
 
10
10
 
11
+ ```ここに言語を入力
12
+
13
+ Spyder Editor
14
+
15
+
16
+
17
+ This is a temporary script file.
18
+
11
19
  """
12
20
 
21
+
22
+
23
+ gamenumber=0
24
+
25
+
26
+
13
- Spyder Editor
27
+ import random
28
+
29
+
30
+
14
-
31
+ a=[random.randint(0,9),
32
+
15
-
33
+ random.randint(0,9),
34
+
16
-
35
+ random.randint(0,9),
36
+
37
+ random.randint(0,9)]
38
+
39
+
40
+
41
+ print(str(a[0])+str(a[1])+str(a[2])+str(a[3]))
42
+
43
+
44
+
45
+ while True:
46
+
47
+ import re
48
+
49
+
50
+
51
+ isok=False
52
+
53
+ while isok==False:
54
+
55
+ b=input(" Enter a number")
56
+
57
+ if not re.match(r"^\d\d\d\d$",b):
58
+
17
- This is a temporary script file.
59
+ print ("Enter a 4 digit number")
60
+
61
+ else:
62
+
63
+ isok=True
64
+
65
+
66
+
67
+
68
+
69
+ hit=0
70
+
71
+ for i in range (4):
72
+
73
+ if a[i]==int(b[i]):
74
+
75
+ hit=hit+1
76
+
77
+
78
+
79
+ blow=0
80
+
81
+ for j in range(4):
82
+
83
+ for i in range(4):
84
+
85
+ if int(b[j])==a[i] and (a[i]!=int(b[i]))and (a[j]!=int(b[j])):
86
+
87
+ blow=blow+1
88
+
89
+ break
90
+
91
+
92
+
93
+
94
+
95
+ print("Hit"+str(hit))
96
+
97
+ print("Blow"+str(blow))
98
+
99
+
100
+
101
+ gamenumber=gamenumber+1
102
+
103
+
104
+
105
+ print("Your tried " + str(gamenumber))
106
+
107
+
108
+
109
+ if hit==4:
110
+
111
+ print("You got the rigt number! You tried " + str(gamenumber)+ " time(s)!")
112
+
113
+ break
114
+
115
+
116
+
117
+ ```
18
118
 
19
119
  """
20
120
 
21
121
 
22
122
 
23
- **gamenumber=0**
123
+
124
+
125
+
126
+
127
+ 自分で書き足した部分はgamenumber=0とgamenumber=gamenumber+1、print("Your tried " + str(gamenumber))とprint("You got the rigt number! You tried " + str(gamenumber)+ " time(s)!")になります。ゲームの最後に何回数字を入力したかを表示されるようにしたいと思い書きました。この段階では一応自分の思った通りにプログラムは作動しています。(何か間違っていても気づいていない可能性もありますが。)
128
+
129
+
130
+
131
+
132
+
133
+ 次に、本ではこのゲームをウィンドウに表示するという方法が説明されており、その通りに書いていったコードに少し自分で書き足したコードと合わせたものがこちらになります。
134
+
135
+
136
+
137
+
138
+
139
+ ```Python
140
+
141
+ """
142
+
143
+ Created on Wed Jan 13 20:02:43 2021
144
+
145
+
146
+
147
+ @author: Hit-chan
148
+
149
+ """
150
+
151
+
24
152
 
25
153
 
26
154
 
27
155
  import random
28
156
 
29
-
157
+ gamenumber=0
158
+
159
+ import tkinter as tk
160
+
161
+ import tkinter.messagebox as tmsg
162
+
163
+
164
+
165
+ #ボタンがクリックされた時の処理
166
+
167
+ def ButtonClick():
168
+
169
+ b=editbox1.get()
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+ #入力されたデータが4桁の数字かどうかを判定する
180
+
181
+
182
+
183
+ import re
184
+
185
+
186
+
187
+ isok=False
188
+
189
+ while isok==False:
190
+
191
+ if not re.match(r"^\d\d\d\d$",b):
192
+
193
+ tmsg.showerror("Error!", "Enter a 4 digit number")
194
+
195
+ break
196
+
197
+ else:
198
+
199
+ isok=True
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+ hit=0
208
+
209
+ for i in range (4):
210
+
211
+ if a[i]==int(b[i]):
212
+
213
+ hit=hit+1
214
+
215
+
216
+
217
+ blow=0
218
+
219
+ for j in range(4):
220
+
221
+ for i in range(4):
222
+
223
+ if int(b[j])==a[i] and (a[i]!=int(b[i]))and (a[j]!=int(b[j])):
224
+
225
+ blow=blow+1
226
+
227
+ break
228
+
229
+
230
+
231
+ gamenumber=gamenumber+1
232
+
233
+
234
+
235
+ #ヒットが4なら当たりで終了
236
+
237
+ if hit==4:
238
+
239
+ tmsg.showinfo("Right", "You got it right!")
240
+
241
+ tmsg.showinfo("Complete", "You tried " + str(gamenumber) + " time(s)!")
242
+
243
+ root.destroy()
244
+
245
+ else:
246
+
247
+ #ヒット数とブロー数を表示
248
+
249
+ rirekibox.insert(tk.END, b + "/Hit" + str(hit) + "/"+"Blow" + str(blow) + "\n")
250
+
251
+
252
+
253
+
30
254
 
31
255
  a=[random.randint(0,9),
32
256
 
@@ -38,228 +262,12 @@
38
262
 
39
263
 
40
264
 
41
- print(str(a[0])+str(a[1])+str(a[2])+str(a[3]))
265
+ print(str(a[0])+str(a[1])+str(a[2])+str(a[3]))
42
-
43
-
44
-
45
- while True:
266
+
46
-
47
- import re
267
+
48
-
49
-
50
-
51
- isok=False
52
-
53
- while isok==False:
54
-
55
- b=input(" Enter a number")
56
-
57
- if not re.match(r"^\d\d\d\d$",b):
58
-
59
- print ("Enter a 4 digit number")
60
-
61
- else:
62
-
63
- isok=True
64
-
65
-
66
-
67
-
68
-
69
- hit=0
70
-
71
- for i in range (4):
72
-
73
- if a[i]==int(b[i]):
74
-
75
- hit=hit+1
76
-
77
-
78
-
79
- blow=0
80
-
81
- for j in range(4):
82
-
83
- for i in range(4):
84
-
85
- if int(b[j])==a[i] and (a[i]!=int(b[i]))and (a[j]!=int(b[j])):
86
-
87
- blow=blow+1
88
-
89
- break
90
-
91
-
92
-
93
-
94
-
95
- print("Hit"+str(hit))
96
-
97
- print("Blow"+str(blow))
98
-
99
-
100
-
101
- **gamenumber=gamenumber+1**
102
-
103
-
104
-
105
- **print("Your tried " + str(gamenumber))**
106
-
107
-
108
-
109
- if hit==4:
110
-
111
- **print("You got the rigt number! You tried " + str(gamenumber)+ " time(s)!")**
112
-
113
- break
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
- 太字の部分は自分で書き足した部分になります。ゲームの最後に何回数字を入力したかを表示されるようにしたいと思い書きました。この段階では一応自分の思った通りにプログラムは作動しています。(何か間違っていても気づいていない可能性もありますが。)
122
-
123
-
124
-
125
-
126
-
127
- 次に、本ではこのゲームをウィンドウに表示するという方法が説明されており、その通りに書いていったコードに少し自分で書き足したコードと合わせたものがこちらになります。
128
-
129
-
130
-
131
-
132
-
133
- """
134
-
135
- Created on Wed Jan 13 20:02:43 2021
136
-
137
-
138
-
139
- @author: Hit-chan
140
-
141
- """
142
-
143
-
144
-
145
-
146
-
147
- import random
148
-
149
- **gamenumber=0**
150
-
151
- import tkinter as tk
152
-
153
- import tkinter.messagebox as tmsg
154
-
155
-
156
-
157
- #ボタンがクリックされた時の処理
158
-
159
- def ButtonClick():
160
-
161
- b=editbox1.get()
162
268
 
163
269
 
164
270
 
165
-
166
-
167
-
168
-
169
-
170
-
171
- #入力されたデータが4桁の数字かどうかを判定する
172
-
173
-
174
-
175
- import re
176
-
177
-
178
-
179
- isok=False
180
-
181
- while isok==False:
182
-
183
- if not re.match(r"^\d\d\d\d$",b):
184
-
185
- tmsg.showerror("Error!", "Enter a 4 digit number")
186
-
187
- break
188
-
189
- else:
190
-
191
- isok=True
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
- hit=0
200
-
201
- for i in range (4):
202
-
203
- if a[i]==int(b[i]):
204
-
205
- hit=hit+1
206
-
207
-
208
-
209
- blow=0
210
-
211
- for j in range(4):
212
-
213
- for i in range(4):
214
-
215
- if int(b[j])==a[i] and (a[i]!=int(b[i]))and (a[j]!=int(b[j])):
216
-
217
- blow=blow+1
218
-
219
- break
220
-
221
-
222
-
223
- **gamenumber=gamenumber+1**
224
-
225
-
226
-
227
- #ヒットが4なら当たりで終了
228
-
229
- if hit==4:
230
-
231
- tmsg.showinfo("Right", "You got it right!")
232
-
233
- tmsg.showinfo("Complete", "You tried " + str(**gamenumber**) + " time(s)!")
234
-
235
- root.destroy()
236
-
237
- else:
238
-
239
- #ヒット数とブロー数を表示
240
-
241
- rirekibox.insert(tk.END, b + "/Hit" + str(hit) + "/"+"Blow" + str(blow) + "\n")
242
-
243
-
244
-
245
-
246
-
247
- a=[random.randint(0,9),
248
-
249
- random.randint(0,9),
250
-
251
- random.randint(0,9),
252
-
253
- random.randint(0,9)]
254
-
255
-
256
-
257
- print(str(a[0])+str(a[1])+str(a[2])+str(a[3]))
258
-
259
-
260
-
261
-
262
-
263
271
  #ウィンドウを作る、入力履歴を表示する
264
272
 
265
273
 
@@ -308,7 +316,7 @@
308
316
 
309
317
 
310
318
 
311
-
319
+ ```
312
320
 
313
321
 
314
322