AWS サービス名タイピングゲーム - 解説記事
はじめに
本記事では、AWSのサービス名をタイピングするゲームの作成手順について解説します。このゲームは、Pythonのゲームライブラリ pygame
を用いて構築されており、pyinstaller
を使用して実行ファイルを作成する方法も含まれています。
目次
プロジェクトの概要
このゲームは、AWSのサービス名を素早く正確にタイピングすることでスコアを競います。各ラウンドでランダムに表示されるサービス名をタイピングし、時間内にできるだけ多くのポイントを獲得してください。
必要な環境
- Python 3.x
-
pygame
ライブラリ
インストール方法
Pythonとpygame
のインストール
まず、Pythonがインストールされていることを確認し、pygame
ライブラリをインストールします。
pip install pygame
次に、リポジトリをクローンまたはダウンロードします。
git clone https://github.com/your-username/aws-typing-game.git
cd aws-typing-game
仮想環境(venv)の設定方法
仮想環境を使用すると、依存関係が隔離され、プロジェクト間でのライブラリの衝突を避けることができます。以下の手順で仮想環境を設定します。
-
仮想環境を作成します
python -m venv venv
-
仮想環境をアクティブにします
-
Windows:
.\venv\Scripts\activate
-
macOS/Linux:
source venv/bin/activate
-
-
必要なライブラリを仮想環境内にインストールします
pip install pygame
使用方法
-
仮想環境をアクティブにします(上記の手順を参照)
-
ゲームのメインスクリプトを実行します
python main.py
-
ゲームが起動したら、表示されるAWSサービス名をタイピングしてエンターキーを押します
-
正確にタイピングすることでスコアが加算されます。タイムリミット内にできるだけ多くのサービス名をタイピングしてください
pyinstaller での実行ファイル作成
ゲームを実行ファイルとして配布したい場合は、pyinstaller
を使用して以下の手順で作成します。
-
仮想環境がアクティブな状態で、
pyinstaller
をインストールしますpip install pyinstaller
-
pyinstaller
を使用して実行ファイルを作成しますpyinstaller --onefile main.py
-
dist
フォルダ内にmain
実行ファイルが生成されます。このファイルをダブルクリックすることでゲームを起動できます
ゲームの詳細
ゲームの概要
このゲームは、プレイヤーがAWSのサービス名をタイピングし、正確に入力することでスコアを競うゲームです。以下は主要なゲームロジックの詳細です。
ゲームの主要クラス
-
Word
クラス:各AWSサービス名を表すクラスです。
text
、x
、y
の属性を持ち、スクリーン上での描画と移動を担当します。class Word: def __init__(self, text, x): self.text = text self.x = x self.y = 0 def move(self, speed): self.y += speed def draw(self, screen): text_surface = FONT.render(self.text, True, BLACK) screen.blit(text_surface, (self.x, self.y))
-
Game
クラス:ゲーム全体のロジックを管理するクラスです。ゲームの開始、プレイ、ゲームオーバーの各状態を制御します。
class Game: def __init__(self): self.screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("AWS Service Name Typing Game") self.clock = pygame.time.Clock() self.start_time = 0 self.reset_game() def reset_game(self): self.state = START self.words = [] self.current_word = "" self.score = 0 self.time_left = TIME_LIMIT self.input_text = "" self.composition = "" def run(self): while True: if self.state == START: self.start_screen() elif self.state == READY: self.ready_screen() elif self.state == PLAYING: self.game_screen() elif self.state == GAME_OVER: self.game_over_screen() elif self.state == RESULT: self.result_screen()
ゲームの動作
-
スタート画面:
プレイヤーは難易度を選択し、ゲームを開始します。
def start_screen(self): self.screen.fill(WHITE) title_text = FONT.render("AWS タイピングゲーム", True, BLACK) self.screen.blit(title_text, title_text.get_rect(center=(WIDTH//2, HEIGHT//5))) # 省略... pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: mouse_pos = pygame.mouse.get_pos() # 省略...
-
ゲーム画面:
単語が上から落ちてくる間にタイピングし、正確に入力するとスコアが加算されます。
def game_screen(self): self.screen.fill(WHITE) # 省略... for word in self.words: word.move(self.word_speed) word.draw(self.screen) if word.y > HEIGHT * 9/10: self.state = GAME_OVER # 省略...
-
ゲームオーバー画面:
時間切れになるとゲームオーバー画面が表示されます。
def game_over_screen(self): self.screen.fill(RED) text = FONT.render(f"ゲームオーバー!{self.score}点でした。。スペースキーでリスタート", True, BLACK) self.screen.blit(text, text.get_rect(center=(WIDTH//2, HEIGHT//2))) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: self.reset_game() self.state = START
まとめ
このゲームは、AWSのサービス名をタイピングし、スコアを競うシンプルで楽しいタイピングゲームです。pygame
を使用してゲームを構築し、pyinstaller
を使って実行ファイルを作成する手順も紹介しました。このプロジェクトを通じて、Pythonでのゲーム開発やパッケージングの基礎を学ぶことができます。
ゲームのさらなる改良や、他のテーマを用いたタイピングゲームの開発など、ぜひチャレンジしてみてください。質問やフィードバックがあれば、気軽にコメントしてください。