見出し画像

Pythonから始めよう!2

こんにちはパギサさんです。
今日はPython習得の2日間コースの最終日「ゲームを作ろう」です。

「ゲーム作りで楽しく学ぶPythonのきほん」
森 巧尚 著 ㈱マイナビ出版 

第2日目(Part2 ゲームを作ろう)

■pygameをインストール
pygame:ゲームを作るのに役立つ機能がたくさん入ったライブラリ。
 1.ゲーム用にウインドウを表示できる
 2.グラフィックスを表示したり動かせる
 3.キーボードやマウスの入力を調べることができる
 4.音を鳴らすことができる
ライブラリ:汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたもの。ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルでない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える

■pygameの基本
ゲームを作る7ステップ
 #1.ゲームの準備をする
 #2.この下をずっとループする
  #3.画面を初期化する
  #4.ユーザーからの入力を調べる
  #5.絵を描いたり、判定したりする
  #6.画面を表示する
  #7.閉じるボタンが押されたら、終了する

「四角形を描くだけのプログラム」
(今回はユーザーからの入力はないので
#4.は省略)

#1.ゲームの準備をする
importしたライブラリやモジュールに省略名をつける
 import ライブラリ名 as 省略名

複数のモジュールやライブラリをimportする
 import ライブラリ名1,ライブラリ名2

pg.init( )  
init・・・「initialize(初期化)」前準備をするという命令

#2.この下をずっとループする
while True:
 無限にずっとくり返す処理

#3.画面を初期化する
screen.fill(pg.Color("WHITE"))・・・ゲームを描くスクリーン(screen)に、fill関数で塗りつぶしを行います

#4.ユーザーからの入力を調べる

#5.絵を描いたり、判定したりする
pg.draw.rect(screen,pg.Color("RED") , (100,100,100,150))・・・pygameのdraw.rect関数で、screenにpg.Colorで指定した赤色で四角形を、どこにどんな風に描くかは、X座標、Y座標、幅、高さの順で指定します。この命令でX100、Y100の位置に、幅100、高さ150の縦長の四角形を描きます

#6.画面を表示する
pg.display.update( )・・・裏側(screen)で描いておいて、ウインドウ(display)で表示する

#7.閉じるボタンが押されたら、終了する
for event in pg.event.get( ):・・・イベントを調べるくり返しの文
ユーザーがウインドウの「閉じる」ボタンを押すと、Pythonには「なにかが押されましたよ」というお知らせがきます。これを「イベント(event)」と呼んでいます。この「押されたものがなにか(event.type)」を調べて、pg.QUITであれば「閉じる」ボタンが押されたとわかるので、終了処理を行います。終了処理を行うためにまず、pg.quit( )でpygame自体を終了させます。ただし、これだけではまだゲーム画面を表示していた外側のウインドウは終了していないので、システムのsys.exit( )でウインドウを終わらせます。これでゲーム全体を終了できるのです。

Pygameリファレンス (pygame命令一覧)
・pygame全体に命令する
pygameを初期化する
 pg.init( )
pygameを終了する
 pg.quit( )
pythonプログラムを終了する
 sys.exit( )
ゲーム用ウインドウを作る
 screen=pg.display.set_mode((幅,高さ))

・図形を描画する
画面を塗りつぶす
 screen.fill(色)
色を指定する
 pg.Color("色の名前")
四角形を描く
 pg.draw.rect(screen,色,(X,Y,幅,高さ))
線を引く
 pg.draw.line(screen,色,(x1,Y1),(x2,Y2),太さ)
円を描く
 pg.draw.ellipse(screen,色,(X,Y,幅,高さ),太さ)

・画像を描画する
画像を読み込む
 画像変数=pg.image.load("画像ファイルパス")
画像を描画する
 screen.blit(画像変数,(X,Y))
画像を描画して、その範囲を取得する
 画像の範囲=screen.blit(画像変数,(X,Y))
画像のサイズを変更する
 画像変数=pg.transform.scale(画像変数,(幅,高さ))
画像を上下左右反転する
 画像変数=pg.transform.flip(画像変数,左右反転,上下反転)

・文字を描画する
フォントを準備する
 font=pg.font.Font(None,文字サイズ)
文字列の画像を作る
 画像変数=font.render("文字列",True,色)

・Rect(矩形(長方形、正方形))を作る
Rectを作る
 変数=pg.Rect(X,Y,幅,高さ)

・時間を調整する
1秒間にこの回数以下のスピードにする
 pg.time.Clock( ).tick(1秒間にこの回数以下のスピードにする)

・キーボード・マウス入力を調べる
今、どのキーが押されているかを調べる
 キー変数=pg.key.get_pressed( )
今、どのマウスボタンが押されているかを調べる
 マウス変数=pg.mouse.get_pressed( )
マウスがどこを指しているかを調べる
 (mx,my)=pg.mouse.get_pos( )

・衝突を判定する
ある点(X,Y)が、rectAの範囲内にあるかを調べる
 変数(範囲内にあるかないか?)=rectA.collidepoint(X,Y)
rectAとrectBが衝突しているかを調べる
 変数(衝突したか、していないか?)=rectA.collidepoint(rectB)
rectAが、リストの中のどれかのrectと衝突しているか調べる
 変数(何番目と衝突したか??)=rectA.collidelist(リスト)

・音を鳴らす
指定したサウンドファイルを鳴らす
 pg.mixer.Sound("サウンドファイルパス").play( )

ボールを反射してブロック崩し🧱
・ゲームの流れ図🕹️
 ゲームの準備
  ゲームの初期化、データの準備
  メインループで使う変数の準備
      ⇩
 ボタンジャンプ関数
  def button_to_jump( ):
      ⇩
 ゲームステージ関数
  def gamestage( ):
  プレイヤーの処理、ボールの処理、
  ブロックの処理、スコアの処理 etc.
      ⇩
 ゲームリセット関数
  def gamereset( ):
      ⇩
 ゲームオーバー画面関数
  def gameover( ):
      ⇩
 ゲームクリア画面関数
  def gameclear( ):
      ⇩
 メインループ🔁
  gamestage( )
  gameover( )、gameclear( )

・完成版プログラム🤖

          続く
          続く
          続く
          以上

・出力結果  見事完成‼️🎉👏👏

本テキストで示されている黄金の3ステップは、
STEP1.「きほん」を学ぶ
STEP2. ゲーム作りで「実践」
SETP3. レベルUP! 
このくり返しで使える知識が身につくそうです。

もう一度作ってと言われても、テキスト見ながらでないと出来ませんが、プログラミングと格闘した有意義な2日間でした😄

この記事が気に入ったらサポートをしてみませんか?