質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1597閲覧

定義した関数が文法エラーとなる

scienceman

総合スコア8

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/24 05:52

#作成しているもの 
pygamezeroを用いて、落下系ゲーム
参考 https://sites.google.com/terrace.qld.edu.au/pygameinmu/gem-catcher?authuser=0
7番目の動画

上から刃物を振らせようとするのですが、定義したdef drop(blade)が文法エラーとなります。
どなたか、原因わかる方いましたら、教えてくださると助かります。

ここにコードを書いてね :-)

import random
WIDTH = 500
HEIGHT = 700
CENTER = WIDTH/2
score = 0

'''Player'''
player = Actor('idle')
player.pos = midbottom=(CENTER,HEIGHT-96)
player_speed = 8

def player_move():
if keyboard.left and player.left >0 :
player.x -= player_speed
elif keyboard.right and player.right<WIDTH :
player.x += player_speed

'''Gems'''
gems = [ ]
number_of_gems = 3

def gem_spawn():
gems.append(Actor('gem',pos = (random.randint(0,WIDTH),0)))

def fall(gem):
if gem.y < 620:
gem.y +=4

for i in range(number_of_gems):
clock.schedule(gem_spawn,i)

"""Blades"""
blades = []
number_of_blades = 2

def blade_spawn():
blades.append(Actor('blade',pos = (random.randint(0,WIDTH),0)

def drop(blade):
if blade.y >HEIGHT:
blade.y = 0
blade.y += 2

for i in range(number_of_blades):
clock.schedule(blade_spawn,i*5)

"""GAME"""

def draw():
screen.fill((0,100,200))

player.draw() for gem in gems: gem.draw() for blade in blades: blade.draw() for i in range(8): screen.blit(images.ground,(i*images.ground.get_width(),HEIGHT-images.ground.get_height())) screen.draw.text(f"Score:{score}",midtop=(CENTER,10),fontname='mini_square',fontsize=36) screen.draw.text("Dodge the blades and grab the gems",midbottom=(CENTER,HEIGHT-15),fontname='mini_square',fontsize=14)

def update():
global score
player_move()

for gem in gems: fall(gem) if player.colliderect(gem): gem.pos = (random.randint(0,WIDTH),0) score += 1 for blade in blades: drop(blade)

#表示されるエラー
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "/Users/travis/build/mu-editor/mu_portable_python_macos/python/lib/python3.6/runpy.py", line 193, in _run_module_as_main
File "/Users/travis/build/mu-editor/mu_portable_python_macos/python/lib/python3.6/runpy.py", line 85, in _run_code
File "/Applications/mu-editor.app/Contents/Resources/app_packages/pgzero/main.py", line 3, in <module>
main()
File "/Applications/mu-editor.app/Contents/Resources/app_packages/pgzero/runner.py", line 79, in main
code = compile(src, os.path.basename(path), 'exec', dont_inherit=True)
File "test.py", line 43
def drop(blade):
^
SyntaxError: invalid syntax

---------- FINISHED ----------
exit code: 1 status: 0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラーが出ている行の上の行で閉じカッコが足りなさそうです。

python

1blades.append(Actor('blade',pos = (random.randint(0,WIDTH),0)

投稿2020/05/24 06:01

shun-K

総合スコア508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scienceman

2020/05/24 09:37

解答ありがとうございます!
guest

0

自己解決

def blade_spawn():
blades.append(Actor('blade',pos = (random.randint(0,WIDTH),0)の部分が、
def blade_spawn():
blades.append(Actor('blade',pos = (random.randint(0,WIDTH),0)))とカッコを閉じるのを忘れていました。

投稿2020/05/24 05:59

scienceman

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問