【Python講座】Pythonで作るパズルゲーム#2_マス上にだんごを表示させてみる
こんにちは、koheiです。
Pythonでパズルゲームを作ろうの第2回目です。
今回は、ウィンドウのマス上にだんごを表示させてみましょう。
動画解説もあります。記事と合わせてどうぞ!
1.だんごゲームの仕様
今回作るだんごゲームの仕様を説明します。
②だんごを配置したら、上部からランダムにだんごが落ちてくる
③同じ色のだんごが縦横斜めに3つ以上並んだらだんごを消す。
④消しただんごの数に応じてスコアが加算される
⑤一番上のマスにだんごが到達したらゲームオーバー
今回は、マス上にだんごを表示する処理を作ってみましょう。
今回のゴール
練習素材は以下からダウンロードできますので、ぜひダウンロードしてやってみてください。
2_マス上にだんごを表示させてみる
1 file(s) 98.93 KB2.背景画像を表示する
まずは、ゲームの背景画像をウィンドウに表示させてみましょう。
練習素材のpygame_dango_game.pyを開いて、以下のコードを加えてみましょう。
※ちなみに、pygame_dango_game.pyには、pygame関連の初期化処理はすでに実装済みです。
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 29 30 31 32 |
import pygame import random import sys #ゲームメイン処理 def main(): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.blit(bg,[0,0]) #背景画像描画 pygame.display.update() clock.tick(10) if __name__ == '__main__': #初期化、画像ロード処理など pygame.init() pygame.display.set_caption("だんごパズル(pygame ver)") screen = pygame.display.set_mode((912,768)) clock = pygame.time.Clock() bg = pygame.image.load("dango_back.png") #背景画像をロード #ゲームメイン処理 main() |
まず29行目の pygame.image.load処理で指定した画像ファイルをロードします。
その後、メイン処理内の15行目screen.blit処理でロードした背景画像をスクリーンに描画しています。
一旦、ここまでできたら、ファイルを保存して実行してみましょう。
以下のようにウィンドウに背景画像が表示されたらOKです。
3.マス上にだんごを表示する
続いて、マス上にだんごを表示させてみましょう。
まず、マス上のだんご表示を管理する2次元リストを作ります。(※マスは、横8×縦10マスなので、2次元とします)
dangoというリストを以下の様に実装しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import pygame import random import sys #だんごをマス上に表示するための2次元リスト dango = [ [1,0,0,0,0,0,3,4], [0,2,0,0,0,0,0,0], [0,2,3,0,0,0,0,0], [0,1,4,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,4,0] ] |
リスト内の数値は、各だんごの表示を示しています。(以下)
続いて、だんご画像をロード処理を書きます。
pygame_dango_game.pyを開いて、以下のコードを加えてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
if __name__ == '__main__': #初期化、画像ロード処理など pygame.init() pygame.display.set_caption("だんごパズル(pygame ver)") screen = pygame.display.set_mode((912,768)) clock = pygame.time.Clock() bg = pygame.image.load("dango_back.png") #背景画像をロード img_dango = [ #だんご画像をロード None, pygame.image.load("dango1.png"), pygame.image.load("dango2.png"), pygame.image.load("dango3.png"), pygame.image.load("dango4.png"), pygame.image.load("dango_kushi.png") ] #ゲームメイン処理 main() |
今回ロードした画像は、img_dangoというリストに格納しています。
ポイントとしては、だんご表示の番号とimg_dangoのindex番号が紐づくように画像を入れています。
次に、だんご表示する関数を作りましょう。
disp_dango()という関数名で作成します。
繰返しfor文で、だんご表示するための2次元リストdangoの値をチェックしていきます。
0より大きければ、screen.bilt処理で、img_dangoリストの画像を引っ張ってきて、スクリーンに描画します。
最後に36行目の名処理内で、disp_dango()を呼び出し完成です。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import pygame import random import sys #だんごをマス上に表示するための2次元リスト dango = [ [1,0,0,0,0,0,3,4], [0,2,0,0,0,0,0,0], [0,2,3,0,0,0,0,0], [0,1,4,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0], [0,0,0,0,0,0,4,0] ] #団子を表示する関数 def disp_dango(): screen.blit(bg,[0,0]) #背景画像描画 for y in range(10): for x in range(8): if dango[y][x] > 0: screen.blit(img_dango[dango[y][x]],[x*72+20, y*72+20]) #ゲームメイン処理 def main(): while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() disp_dango() # だんご表示 pygame.display.update() clock.tick(10) if __name__ == '__main__': #初期化、画像ロード処理など pygame.init() pygame.display.set_caption("だんごパズル(pygame ver)") screen = pygame.display.set_mode((912,768)) clock = pygame.time.Clock() bg = pygame.image.load("dango_back.png") #背景画像をロード img_dango = [ #だんご画像をロード None, pygame.image.load("dango1.png"), pygame.image.load("dango2.png"), pygame.image.load("dango3.png"), pygame.image.load("dango4.png"), pygame.image.load("dango_kushi.png") ] #ゲームメイン処理 main() |
ここまで実装できたら、ファイルを保存して実行してみましょう。
以下のように、マス上に意図通りだんごが表示されればOKです。
余裕があれば、2次元リストdangoの数値を色々変えてみて、だんごの表示位置、種類が変わるか試してみてください。
4.最後に
以上、今回はマス上にだんごを表示させる処理を作ってみました。
次回はだんごの落下処理など作っていこうと思います。
それでは、次回もお楽しみに!
スポンサーリンク