今日は、Pythonの一般的なモジュールを使って、Pythonで簡単なゲームをコーディングする方法を学びます。
なぜPythonを使うのか?
Pythonはよく知られたプログラミング言語です。
Pythonは理解するのもコーディングするのもとても簡単です。
開発者に優しいと言われています。
初心者の方でも、短期間でPythonのプログラミングを習得することができます。
この言語の最も興味深い特徴のいくつかは、次のとおりです。
- Pythonは、オープンソースで無料です。
- ポータブルでダイナミック
- 超理解しやすいなど。
Pythonで簡単なゲームを作る
それでは、初心者でも作れる簡単なゲームをPythonで実装して、学習のスタートダッシュを切りましょう!
1. Pythonで作るクイズゲーム
これはPythonを使ったとてもシンプルなテキストベースのゲームです。
これは、自分自身や友人のために作ることができる小さなクイズです。
このゲームでは、モジュールをインポートする必要がないので、簡単にできます。
ここで使用されています。
- if-elseステートメント-答えを確認するため
- Printステートメント – 出力を印刷するため
print ( 'Welcome to AskPython Quiz' )
answer = input ( 'Are you ready to play the Quiz ? (yes/no) :' )
score = 0
total_questions = 3
if answer.lower() = = 'yes' :
answer = input ( 'Question 1: What is your Favourite programming language?' )
if answer.lower() = = 'python' :
score + = 1
print ( 'correct' )
else :
print ( 'Wrong Answer :(' )
answer = input ( 'Question 2: Do you follow any author on AskPython? ' )
if answer.lower() = = 'yes' :
score + = 1
print ( 'correct' )
else :
print ( 'Wrong Answer :(' )
answer = input ( 'Question 3: What is the name of your favourite website for learning Python?' )
if answer.lower() = = 'askpython' :
score + = 1
print ( 'correct' )
else :
print ( 'Wrong Answer :(' )
print ( 'Thankyou for Playing this small quiz game, you attempted' ,score, "questions correctly!" )
mark = (score / total_questions) * 100
print ( 'Marks obtained:' ,mark)
print ( 'BYE!' )
|
結果は以下の通りです。
Welcome to AskPython Quiz Are you ready to play the Quiz ? (yes / no) :yes
Question 1 : What is your Favourite programming language?python
correct Question 2 : Do you follow any author on AskPython? yes
correct Question 3 : What is the name of your favourite website for learning Python?askpython
correct Thankyou for Playing this small quiz game, you attempted 3 questions correctly!
Marks obtained: 100.0
BYE! |
2. Pythonで作るピンポンゲーム
私たちのほとんどは、有名なピンポンゲームについて聞いたことがあります。
私たちの多くは、それを再生するのが大好きです。
今日は、この古典的なゲームをPythonプログラミング言語を使ってコーディングする方法を学びましょう。
コーディングに入る前に、まずturtleモジュールをインストールする必要があります。
turtleモジュールはPythonのライブラリで、仮想キャンバスを使って絵や図形を作成することができるようになります。
もしまだ持っていなければ、pip を使ってライブラリをインストールすることができます。
C:UsersAdmin>pip install turtle
|
turtle ライブラリについての詳細は、公式ドキュメントをご覧ください。
自分でコードを書いてみよう
import turtle as t
playerAscore = 0
playerBscore = 0
#create a window and declare a variable called window and call the screen() window = t.Screen()
window.title( "The Pong Game" )
window.bgcolor( "green" )
window.setup(width = 800 ,height = 600 )
window.tracer( 0 )
#Creating the left paddle leftpaddle = t.Turtle()
leftpaddle.speed( 0 )
leftpaddle.shape( "square" )
leftpaddle.color( "white" )
leftpaddle.shapesize(stretch_wid = 5 ,stretch_len = 1 )
leftpaddle.penup() leftpaddle.goto( - 350 , 0 )
#Creating the right paddle rightpaddle = t.Turtle()
rightpaddle.speed( 0 )
rightpaddle.shape( "square" )
rightpaddle.color( "white" )
rightpaddle.shapesize(stretch_wid = 5 ,stretch_len = 1 )
rightpaddle.penup() rightpaddle.goto( - 350 , 0 )
#Code for creating the ball ball = t.Turtle()
ball.speed( 0 )
ball.shape( "circle" )
ball.color( "red" )
ball.penup() ball.goto( 5 , 5 )
ballxdirection = 0.2
ballydirection = 0.2
#Code for creating pen for scorecard update pen = t.Turtle()
pen.speed( 0 )
pen.color( "Blue" )
pen.penup() pen.hideturtle() pen.goto( 0 , 260 )
pen.write( "score" ,align = "center" ,font = ( 'Arial' , 24 , 'normal' ))
#code for moving the leftpaddle def leftpaddleup():
y = leftpaddle.ycor()
y = y + 90
leftpaddle.sety(y)
def leftpaddledown():
y = leftpaddle.ycor()
y = y + 90
leftpaddle.sety(y)
#code for moving the rightpaddle def rightpaddleup():
y = rightpaddle.ycor()
y = y + 90
rightpaddle.sety(y)
def rightpaddledown():
y = rightpaddle.ycor()
y = y + 90
rightpaddle.sety(y)
#Assign keys to play window.listen() window.onkeypress(leftpaddleup, 'w' )
window.onkeypress(leftpaddledown, 's' )
window.onkeypress(rightpaddleup, 'Up' )
window.onkeypress(rightpaddledown, 'Down' )
while True :
window.update()
#moving the ball
ball.setx(ball.xcor() + ballxdirection)
ball.sety(ball.ycor() + ballxdirection)
#border set up
if ball.ycor()> 290 :
ball.sety( 290 )
ballydirection = ballydirection * - 1
if ball.ycor()< - 290 :
ball.sety( - 290 )
ballydirection = ballydirection * - 1
if ball.xcor() > 390 :
ball.goto( 0 , 0 )
ball_dx = ball_dx * - 1
player_a_score = player_a_score + 1
pen.clear()
pen.write( "Player A: {} Player B: {} " . format (player_a_score,player_b_score),align = "center" ,font = ( 'Monaco' , 24 , "normal" ))
os.system( "afplay wallhit.wav&" )
if (ball.xcor()) < - 390 : # Left width paddle Border
ball.goto( 0 , 0 )
ball_dx = ball_dx * - 1
player_b_score = player_b_score + 1
pen.clear()
pen.write( "Player A: {} Player B: {} " . format (player_a_score,player_b_score),align = "center" ,font = ( 'Monaco' , 24 , "normal" ))
os.system( "afplay wallhit.wav&" )
# Handling the collisions with paddles.
if (ball.xcor() > 340 ) and (ball.xcor() < 350 ) and (ball.ycor() < rightpaddle.ycor() + 40 and ball.ycor() > rightpaddle.ycor() - 40 ):
ball.setx( 340 )
ball_dx = ball_dx * - 1
os.system( "afplay paddle.wav&" )
if (ball.xcor() < - 340 ) and (ball.xcor() > - 350 ) and (ball.ycor() < leftpaddle.ycor() + 40 and ball.ycor() > leftpaddle.ycor() - 40 ):
ball.setx( - 340 )
ball_dx = ball_dx * - 1
os.system( "afplay paddle.wav&" )
|
結果は以下の通りです。
C:UsersAdmin>pip install turtle
|
3. Pythonでハングリースネークゲーム
これは、私たちが子供の頃、最も好きだったゲームです。
さっそく始めてみましょう。
まず最初に、turtleをインストールする必要があります。
もしまだインストールしていないなら、cmd を開いて以下のコマンドを入力してください。
C:UsersAdmin>pip install random2
|
次に、random モジュールをインストールします。
randomモジュールは、乱数を生成するために使用します。
cmdで以下のコマンドを入力します。
import turtle
import random
w = 500
h = 500
food_size = 10
delay = 100
offsets = {
"up" : ( 0 , 20 ),
"down" : ( 0 , - 20 ),
"left" : ( - 20 , 0 ),
"right" : ( 20 , 0 )
} def reset():
global snake, snake_dir, food_position, pen
snake = [[ 0 , 0 ], [ 0 , 20 ], [ 0 , 40 ], [ 0 , 60 ], [ 0 , 80 ]]
snake_dir = "up"
food_position = get_random_food_position()
food.goto(food_position)
move_snake()
def move_snake():
global snake_dir
new_head = snake[ - 1 ].copy()
new_head[ 0 ] = snake[ - 1 ][ 0 ] + offsets[snake_dir][ 0 ]
new_head[ 1 ] = snake[ - 1 ][ 1 ] + offsets[snake_dir][ 1 ]
if new_head in snake[: - 1 ]:
reset()
else :
snake.append(new_head)
if not food_collision():
snake.pop( 0 )
if snake[ - 1 ][ 0 ] > w / 2 :
snake[ - 1 ][ 0 ] - = w
elif snake[ - 1 ][ 0 ] < - w / 2 :
snake[ - 1 ][ 0 ] + = w
elif snake[ - 1 ][ 1 ] > h / 2 :
snake[ - 1 ][ 1 ] - = h
elif snake[ - 1 ][ 1 ] < - h / 2 :
snake[ - 1 ][ 1 ] + = h
pen.clearstamps()
for segment in snake:
pen.goto(segment[ 0 ], segment[ 1 ])
pen.stamp()
screen.update()
turtle.ontimer(move_snake, delay)
def food_collision():
global food_position
if get_distance(snake[ - 1 ], food_position) < 20 :
food_position = get_random_food_position()
food.goto(food_position)
return True
return False
def get_random_food_position():
x = random.randint( - w / 2 + food_size, w / 2 - food_size)
y = random.randint( - h / 2 + food_size, h / 2 - food_size)
return (x, y)
def get_distance(pos1, pos2):
x1, y1 = pos1
x2, y2 = pos2
distance = ((y2 - y1) * * 2 + (x2 - x1) * * 2 ) * * 0.5
return distance
def go_up():
global snake_dir
if snake_dir ! = "down" :
snake_dir = "up"
def go_right():
global snake_dir
if snake_dir ! = "left" :
snake_dir = "right"
def go_down():
global snake_dir
if snake_dir! = "up" :
snake_dir = "down"
def go_left():
global snake_dir
if snake_dir ! = "right" :
snake_dir = "left"
screen = turtle.Screen()
screen.setup(w, h) screen.title( "Snake" )
screen.bgcolor( "blue" )
screen.setup( 500 , 500 )
screen.tracer( 0 )
pen = turtle.Turtle( "square" )
pen.penup() food = turtle.Turtle()
food.shape( "square" )
food.color( "yellow" )
food.shapesize(food_size / 20 )
food.penup() screen.listen() screen.onkey(go_up, "Up" )
screen.onkey(go_right, "Right" )
screen.onkey(go_down, "Down" )
screen.onkey(go_left, "Left" )
reset() turtle.done() |
コードを書いて、自分で試してみてください。
結果は以下の通りです。
まとめ
といったところでしょうか。
以上、Pythonで初心者でも作れる簡単なゲームを紹介しました。
私たちはこれらのプロジェクトを作るのが大好きです。