【Python講座】Pythonで作るパズルゲーム#1_Python基本
どうも、こんにちはKoheiです。
みなさん、Python(パイソン)という言語をご存知でしょうか?
Pythonは、AI(人工知能)や機械学習分野で使われて非常に人気のある言語で、アプリケーション開発やゲーム開発などでも使用されています。
今回は「Python (パイソン)」を使って、簡単なパズルゲームを作ってみたいと思います。
最終的には、以下のようなだんごパズルゲームを制作します。(以下)
まず第1回目は、Pythonの基本やPygameについて解説していきます。
動画解説もあります。記事と合わせてどうぞ!
目次
1.Pythonの環境構築
1-1.Pythonのインストール
ご自分のPCにPythonが入っていない場合は以下のサイトからPythonをインストールしましょう。
なお、今回の講座では、Python3.x系を使用します。(Pythonは、バージョン2.x系と3.x系があります)
※Pythonのインストールについては、色んなサイトで解説されていますので、本記事では説明は割愛します。
1-2.Pythonの開発環境を準備する
Pythonを実装、実行するための開発環境を準備しましょう。
色々開発環境はありますが、個人的には、VisualStudioCodeがおすすめです。
VisualStudioCodeを入れたら、Pythonプラグインをインストールしましょう。
これで、Pythonを実行できます。
1-3.Pygameのインストール
今回、Pythonでゲームを作成するにあたり、
Pygameをインストールするには、ターミナルから以下コマンドを入力しましょう。(Windows:コマンドプロンプト、Mac:ターミナル)
2.Pythonの基本
簡単にPython言語の基本的な構文を見ていきましょう。
ちなみに、今回はパズルゲームで使う基本構文だけ取り上げますので、もっとPythonを知りたい方はぜひPython関連の書籍を購入して深く勉強してみてください。
今回解説するソースの完成例や練習用のファイルは以下からダウンロードできます。
1_Python基本
1 file(s) 3.61 KB2-1.変数
変数は、値を入れて置くための箱のようなものです。この箱に数字や文字列を入れて、計算したり、条件分岐させたりします。
※Pythonに限らず、ほとんどのプログラミング言語で変数という概念は存在します。
変数を使うには、変数の名前を決めて、値を入れるだけです。
変数の値を入れるには、=(イコール)を使います。
変数には、数値だけではなく、文字列も入れることができます。
※Pythonの変数の型は、状況に応じて自動的に決定されます。
変数を使った簡単な処理を書いてみましょう。練習素材の”hensuu.py”をエディタで開き、以下の様に実装してみましょう。
hensuu.py
1 2 3 4 5 6 7 8 9 |
#Python 変数例: a = 4 #変数の宣言と初期化 print(a) #aを出力 a=a*2 #変数a×2の結果をaに代入 print(a) #aを出力 str="だんご" #変数の宣言、初期化(文字列) print(str) #strを出力 |
実装できたら、ファイルを保存して、”hensuu.py”を実行してみましょう。
実行方法は、ターミナルもしくはコマンドプロンプトで、”hensuu.py”が置いてあるパスへ移動し、以下の実行します。(もしくは、VisualStudioコードにプラグインを入れている方はVisualStudioコードから実行してもOKです。)
実行結果
8
だんご
変数aの出力、変数aに×2した値の出力、最後にstr変数の文字列を出力させた結果が表示されればOKです。
2-2.リスト
リストは、単一の数字だけではなく、複数のデータをまとめて入れることができます。
リストを使った簡単な処理を書いてみましょう。練習素材の”list.py”をエディタで開き、以下の様に実装してみましょう。
list.py
1 2 3 4 5 6 7 8 |
#Python list a = [1,2,3,4,5] #リスト作成 print(a[0]) #リストの0番目を出力 print(a[1]) #リストの1番目を出力 print(a[4]) #リストの4番目を出力 a[4] = 99 #リストの4番目に値を代入 print(a[4]) #リストの4番目を出力 |
実装できたら、ファイルを保存して、”list.py”を実行してみましょう。
実行結果
2
5
99
リストの0番目と1番目、4番目の値を出力し、最後にリスト4番目に値を代入して出力しています。
上記のような結果になればOKです。
2-3.条件分岐
「もし、何々ならこの処理を実行する」のように、条件によって、実行する処理を命令するのが条件分岐です。
条件分岐は、if文を使います。
if文の条件式の後はコロンを記載します。
その後、条件が成り立った場合の処理を字下げして記載します。複数の処理を実行したいなら、必ずすべての処理を字下げしましょう。
条件分岐を使った簡単な処理を書いてみましょう。練習素材の”jouken.py”をエディタで開き、以下の様に実装してみましょう。
jouken.py
1 2 3 4 5 6 |
#python 条件分岐 age = 40 if age < 20: print("あなたは未成年です") else: print("あなたは成年です") |
実装できたら、ファイルを保存して、”jouken.py”を実行してみましょう。
実行結果
ageに40を代入したので、条件分岐の「あなたは成年です」の処理を通りました。
ageに20より小さい値を入れると、未成年の処理を通るはずです。ageにいろんな数字を入れて試してみてください。
2-4.繰り返し
同じような処理を繰り返す場合は、繰り返し処理が便利です。
まずはfor文を使った繰り返し処理を見ていきましょう。
以下のように繰り返す値の範囲を記載します。
次にwhile文を使った繰り返し命令です。
以下の様に記載します。
繰り返し処理を実際に書いてみましょう。
練習素材の”kurikaeshi.py”をエディタで開き、以下の様に実装してみましょう。
kurikaeshi.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#for 繰り返し #range(はじめの数、終わりの数) print("for pattern1") for i in range(1,5): print(i) #range 10回繰り返す iのはじめは0から print("for pattern2") for i in range(10): print(i) # while print("while loop") i=0 while i < 10: print(i) i = i + 1 |
実装できたら、ファイルを保存して、”kurikaeshi.py”を実行してみましょう。
実行結果
1
2
3
4
for pattern2
0
1
2
3
4
5
6
7
8
9
while loop
0
1
2
3
4
5
6
7
8
9
上記のように、実装した繰り返し範囲分、出力されていればOKです。
2-5.関数
関数とはコンピューターが行う処理を1つにまとめて記述したものです。
defを使って、以下のように記載します。
また、関数には、引数と呼ばれる値を渡すことができます。渡された引数をもとに関数内で計算できます。
関数で計算された結果を出力することもできます。これを戻り値といいます。
以下を実装してみて、簡単にイメージを掴みましょう。
練習素材の”kansu.py”をエディタで開き、以下の様に実装してみましょう。
kansu.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#関数 def test(): print("test") test() #関数 引数 def point(val): print("あなたのポイントは") print(val) print("です") point(100) #関数 戻り値 def test_add(a,b): return a+b c = test_add(2,4) print(c) |
実装できたら、ファイルを保存して、”kansu.py”を実行してみましょう。
実行結果
あなたのポイントは
100
です
6
最初は、test()という関数を呼び出しています。
test()は単純に”test”と表示するだけの関数です。
次に、pointという関数を定義しています。
pointは、引数で渡されたvalをprintしています。引数は、呼び出し側から100が設定されています。
最後にtest_add()という関数が定義されています。
これは、引数で設定したa,bを足し算する関数です。呼び出し側から2,4を渡されたので、合計値6が表示されています。
3.Pygameの使い方
PygameとはPythonでゲーム開発を支援する拡張モジュールのことです。
Pygameを使えば、画像を拡大、縮小できたり、回転したり、サウンドを出力したりできます。
ここでは、簡単な例として、ウィンドウに文字列を表示する方法を紹介します。
※実際に次回以降、パズルゲームを作りながら、Pygameの使い方は随時紹介していきます。
練習素材の”pygame_sample.py”をエディタで開き、以下の様に実装してみましょう。
pygame_sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#pygameサンプル(文字列の表示) import pygame #pygameモジュールをインポート import sys #sysモジュールをインポート #メインモジュール def main(): cnt = 0 while True: #繰り返しループ cnt = cnt + 1 for event in pygame.event.get(): if event.type == pygame.QUIT: #ウィンドウ閉じるボタンが押されたとき pygame.quit() #pygameモジュールを終了 sys.exit() #プログラム終了 screen.fill((0,0,0)) #スクリーンを黒にする txt = font.render(str(cnt),True,(255,255,255)) #テキストオブジェクトを作成 screen.blit(txt,[400,300]) #スクリーンにテキストを描画する pygame.display.update() #画面更新 clock.tick(10) #フレームレート1秒間に10回 if __name__ == '__main__': pygame.init() #pygameモジュール初期化 pygame.display.set_caption("pygame sample") #ウィンドウ上部に表示するタイトル screen = pygame.display.set_mode((912,768)) #描画のスクリーン初期化 clock = pygame.time.Clock() #clockオブジェクト作成 font = pygame.font.Font(None,80) #フォントオブジェクト作成 main() #メインモジュール呼び出し |
処理説明
Pygameを全体の処理は、基本的に以下のような流れで処理を書いていきます。
①Pygame初期化(22行目〜26行目)
pygameモジュールの初期化や、描画スクリーンの初期化、clockオブジェクト、フォントオブジェクトなどを作成します。
②繰り返しループ(8行目〜19行目)
While Trueの無限ループないで処理をぐるぐる回します。
18行目の画面更新、19行目のフレームレート設定で、1秒間に画面を10回描画している処理になります。
※if __name__ == ‘__main__’:について
上記の条件はこのプログラムが直接実行された時という条件になります。
Pythonのプログラムは、実行時に__name__という変数が作られ、プログラムを直接実行したときは、ここに__main__が入ります。
実装できたら、ファイルを保存して、”pygame_sample.py”を実行してみましょう。
実行結果
上記のように、背景が真っ黒のWindowが開き、中央付近に数字がカウントアップされていけばOKです。
4.最後に
以上、今回はPythonの基本的なところをざっくりと説明していきました。
あとは、実際にゲームを作りながら、具体的に説明していきたいと思います。
早速次回から、パズルゲームの制作に入っていきます!
ぜひ、次回記事も読んでいただければ幸いです。
それでは!
スポンサーリンク