Pygameが持っている高速処理という特徴を活かして、シューティングゲームを作りたいと思います。Unityでゲームを制作する時と同様に、まずは見た目の部分から作成しましょう。
シューティングゲームにおける背景の作成と自動スクロール
まずは、背景となる画像を用意しましょう。
レトロな感じを醸し出すため「夜空」などシンプルなものが良いでしょう。更にスクロール感を出すため、夜空には星が映っている画像がおすすめです。
★Pythonを本格的に学ぶならUdemyがおすすめです。

【2025年】UdemyのPythonおすすめコース12選!
最近当ブログでもPythonに関する記事を取り扱う事が多くなってきました。しかし、正直上手く説明出来ている自信もあまりないので、今回は格安セールでおなじみのUdemyで学べるおすすめのPythonコースについてまとめておきたいと思います。【...
背景の表示と縦に高速スクロールさせるスクリプトの作成
新規スクリプト「Shooting」を作ります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pygame | |
import sys | |
img_bg = pygame.image.load("bgimage.png") | |
bg_y = 0 | |
def main(): | |
global bg_y | |
pygame.init() | |
pygame.display.set_caption("シューティングゲームの背景") | |
screen = pygame.display.set_mode((640,480)) | |
clock = pygame.time.Clock() | |
while True: | |
for event in pygame.event.get(): | |
if event.type == pygame.QUIT: | |
pygame.quit() | |
sys.exit() | |
bg_y = (bg_y+8)%480 | |
screen.blit(img_bg,[0,bg_y-480]) | |
screen.blit(img_bg,[0,bg_y]) | |
pygame.display.update() | |
clock.tick() | |
if __name__ == "__main__": | |
main() |
基本的に、tkinterの時と比べてもそんなに複雑な内容ではないですね。
Y座標を管理する「bg_y」の値を増やすことで、背景をスクロールさせていきます。
後は、描画を行うscreen.blitを使って、上下2枚の背景を描画します。
スクリプトを実行するとこのように背景がスクロールしていることが分かります。
スクロールさせるスピードに関しては、簡単に調整できるので、好きなスピードに変えてください。
それにしても、星の数が多すぎてごちゃごちゃしている印象がありますね。
これは悪い例ですけど、あまりごちゃごちゃしすぎていると敵を出現させたときや、自機から攻撃技を出した際に、周りのイラストと被って区別がしにくくなるかもしれません。
ですから、画像に関してはもう少し無地に近いものを選択してもらえればと思います。