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

質問編集履歴

3

コードの修正

2021/06/03 01:36

投稿

sakuramochiIII
sakuramochiIII

スコア8

title CHANGED
File without changes
body CHANGED
@@ -18,36 +18,39 @@
18
18
  import pyxel
19
19
 
20
20
  class App:
21
- def init(self):
21
+ def __init__(self):
22
22
  pyxel.init(160, 120, caption="Invadors game",
23
23
  palette=[1],quit_key=pyxel.KEY_NONE)
24
-
25
24
  #Player
25
+ class player:
26
- def init(self):
26
+ def __init__(self):
27
27
  pyxel.image(0).load(0, 0, "./player.png")
28
28
  playerX,playerY = 370, 480
29
29
  playerX_change = 0
30
-
30
+ class sound:
31
- def init(self):
31
+ def __init__(self):
32
32
  self.music_player = MusicPlayer('laser.wav')
33
33
 
34
34
  #kadai
35
+ class kadai:
35
- def init(self):
36
+ def __init__(self):
36
- kadaiImg = pyxel.image.load('kadai.png')
37
+ pyxel.image(1).load(0, 0, "./kadai.png")
37
38
  kadaiX = random.randint(0, 736)
38
39
  kadaiY = random.randint(50, 150)
39
40
  kadaiX_change, kadaiY_change = 4, 40
40
41
 
41
42
  #Bullet
43
+ class Bullet:
42
- def ini(self):
44
+ def __init__(self):
43
- bulletImg = pyxel.image.load('bullet.png')
45
+ pyxel.image(2).load(0, 0, "./bullet.png")
44
46
  bulletX, bulletY = 0, 480
45
47
  bulletX_change, bulletY_change = 0, 3
46
48
  bullet_state = 'ready'
47
49
 
48
50
 
49
51
  #Score
52
+ class score:
50
- score_value = 0
53
+ score_value = 0
51
54
 
52
55
  def player(x, y):
53
56
  screen.blit(playerImg, (x, y))
@@ -67,7 +70,7 @@
67
70
  else:
68
71
  return False
69
72
 
70
- def init(self):
73
+ def __init__(self):
71
74
  running = True
72
75
  while running:
73
76
  screen.fill((0, 0, 0))
@@ -92,7 +95,7 @@
92
95
  playerX_change = 0
93
96
 
94
97
  #Player
95
- def init(player):
98
+ def __init__(player):
96
99
  playerX += playerX_change
97
100
  if playerX <= 0:
98
101
  playerX = 0

2

コードの追記

2021/06/03 01:36

投稿

sakuramochiIII
sakuramochiIII

スコア8

title CHANGED
File without changes
body CHANGED
@@ -147,4 +147,142 @@
147
147
 
148
148
  ここに問題に対して試したことを記載してください。
149
149
 
150
- ### 補足情報(FW/ツールのバージョンなど)
150
+ ### 補足情報(FW/ツールのバージョンなど)
151
+ 最終目標としては、Pygameで書かれたコードを同じ動作をするようにpyxelで書き換えることです。
152
+ ```Pygame
153
+ import pygame
154
+ from pygame import mixer
155
+ import random
156
+ import math
157
+
158
+
159
+ pygame.init()
160
+
161
+
162
+ screen = pygame.display.set_mode((800, 600))
163
+ screen.fill((150,150,150))
164
+ pygame.display.set_caption('Invaders game')
165
+
166
+
167
+ #Player
168
+ playerimg = pygame.image.load('player.png')
169
+ playerX,playerY = 370, 480
170
+ playerX_change = 0
171
+
172
+
173
+ #mixer.Sound('laser.wav').play()
174
+
175
+
176
+ #Enemy
177
+ enemyImg = pygame.image.load('enemy.png')
178
+ enemyX = random.randint(0, 736)
179
+ enemyY = random.randint(50, 150)
180
+ enemyX_change, enemyY_change = 4, 40
181
+
182
+
183
+ #Bullet
184
+ bulletImg = pygame.image.load('bullet.png')
185
+ bulletX, bulletY = 0, 480
186
+ bulletX_change, bulletY_change = 0, 3
187
+ bullet_state = 'ready'
188
+
189
+
190
+
191
+
192
+
193
+
194
+ #Score
195
+ score_value = 0
196
+
197
+
198
+ def player(x, y):
199
+ screen.blit(playerImg, (x, y))
200
+
201
+
202
+ def enemy(x, y):
203
+ screen.blit(enemyImg, (x, y))
204
+
205
+ def fire_bullet(x, y):
206
+ global bullet_state
207
+ bullet_state = 'fire'
208
+ screen.blit(bulletImg, (x + 16, y + 10))
209
+
210
+ def isCollision(enemyX, enemyY, bulletX, bulletY):
211
+ distance = math.sqrt(math.pow(enemyX - bulletX, 2) + math.pow(enemyY - bulletY, 2))
212
+ if distance < 27:
213
+ return true
214
+ else:
215
+ return False
216
+
217
+
218
+ running = True
219
+ while running:
220
+ screen.fill((0, 0, 0))
221
+ #font = pygame.font.SysFont(None, 80)
222
+ #message = font.render('Hello World', False, (255, 255, 255))
223
+ #screen.blit(message, (20,50))
224
+ for event in pygame.event.get():
225
+ if event.type == pygame.QUIT:
226
+ running = False
227
+ if event.type == pygame.KEYDOWN:
228
+ if event.key == pygame.K_LEFT:
229
+ playerX_change = -1.5
230
+ if event.key == pygame.K_RIGHT:
231
+ playerX_change = 1.5
232
+ if event.key == pygame.K_SPACE:
233
+ if bullet_state is 'ready':
234
+ bulletX = playerX
235
+ fire_bullet(bulletX, bulletY)
236
+
237
+ if event.type == pygame.KEYUP:
238
+ if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
239
+ playerX_change = 0
240
+
241
+ #Player
242
+ playerX += playerX_change
243
+ if playerX <= 0:
244
+ playerX = 0
245
+ elif playerX >= 736:
246
+ playerX = 736
247
+
248
+ #Enemy
249
+ if enemy > 440:
250
+ break
251
+ enemyX += enemyX_change
252
+ if enemyX <= 0:
253
+ enemyX_change = 4 #go right if come to the leftend
254
+ enemyY += enemyY_change
255
+ elif enemyX >= 736:
256
+ enemyX_change = -4 #go left if come to the rightend
257
+ enemyY += enemyY_change
258
+
259
+ collision = isCollision(enemyX, enemyY, bulletX, bulletY)
260
+ if collosion:
261
+ bulletY = 480
262
+ bullet_state = 'ready'
263
+ score_value += 1
264
+ enemyX = random.randint(0, 736)
265
+ enemyY = random.randint(50, 150)
266
+
267
+ #bullet Movement
268
+ if bulletY <=0:
269
+ bulletY = 480
270
+ bullet_state = 'ready'
271
+
272
+ if bullet_state is 'fire':
273
+ fire_bullet(bulletX, bulletY)
274
+ bulletY -= bulletY_change
275
+
276
+
277
+
278
+ #Score
279
+ font = pygame.font.SysFont(None, 32) #creating fonts 'None' is default
280
+ score = font.render("Score: {str(score_value)}", True, (255,255,255))
281
+ screen.blit(score, (20,50))
282
+
283
+
284
+ player(playerX, playerY)
285
+ enemy(enemyX, enemyY)
286
+
287
+ pygame.display.update()
288
+ ```

1

内容の改善、補足

2021/06/03 00:45

投稿

sakuramochiIII
sakuramochiIII

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,15 @@
1
1
  ### 前提・実現したいこと
2
+ pyxelでインベーダーゲームを作っています。
2
3
 
3
- 実行しても何も起こらなくなってしまいました。アドバイスお願いします。
4
+ 下のエラーメッセージを改善しようと書き換えたところ、実行しても何も起こらなくなってしまいました。アドバイスお願いします。
4
5
 
5
6
  ### 発生している問題・エラーメッセージ
6
7
 
7
8
  ```
9
+ File "/Users/higashirinako/Downloads/pyxel_me/a.py", line 78
8
- エラーメッセージ(無し)
10
+ playerX += playerX_change
11
+ ^
12
+ IndentationError: unindent does not match any outer indentation level
9
13
  ```
10
14
 
11
15
  ### 該当のソースコード
@@ -143,6 +147,4 @@
143
147
 
144
148
  ここに問題に対して試したことを記載してください。
145
149
 
146
- ### 補足情報(FW/ツールのバージョンなど)
150
+ ### 補足情報(FW/ツールのバージョンなど)
147
-
148
- ここにより詳細な情報を記載してください。