【ITニュース解説】Learn By Code 1.4

2025年09月04日に「Dev.to」が公開したITニュース「Learn By Code 1.4」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Pongゲーム開発の基本を解説。ボール、パドル、スコアリングの3要素に分解し、それぞれの動きや衝突判定、得点処理を説明。初心者向けゲームエンジンMini Microでの実装を想定し、画面端の判定やスコア保持のヒントも提供。Pong製作を通してゲーム開発の基礎が学べる。

出典: Learn By Code 1.4 | Dev.to公開日:

ITニュース解説

この記事では、初期のビデオゲームであるPongを題材に、ゲーム開発の基礎を解説する。Pongは、2つのパドルとボールを使って、相手のゴールにボールを入れるゲームだ。開発者の視点で見ると、Pongはオブジェクトの移動、衝突判定、スコアリング、プレイヤーの入力への反応といった、ゲーム開発の重要な要素を含んでいる。

Pongを理解するために、ゲームを構成する要素を分割して考える。「ボール」と「ストライカー(パドル)」の2つに大きく分けられる。

ボールは、画面上を動き回り、壁やストライカーとの衝突に反応する。壁との衝突は、画面の上端と下端での反射、左右端での得点につながる。左右の壁は、それぞれ左側の壁と右側の壁として区別され、ボールが左側の壁に触れると右側のプレイヤーが得点し、右側の壁に触れると左側のプレイヤーが得点する。ストライカーとの衝突では、ボールの進行方向が変化する。

ストライカーは、プレイヤーが操作するオブジェクトで、画面の左右に配置され、通常はキー入力に応じて縦方向(Y軸)に移動する。コード例では、「w」キーと「s」キーで左側のストライカーを、「i」キーと「k」キーで右側のストライカーを操作している。Flipper1.y < 624のような条件は、ストライカーが画面外に出ないようにするための安全策だ。

スコアリングは、ゲームの重要な要素だ。各プレイヤーのスコアを格納する変数を設け、得点が入るたびにスコアを更新する。Mini Microというゲームエンジンでは、startup.msというファイルにスコアなどの変数を定義することで、ゲームを再起動してもスコアがリセットされないようにできる。startup.msはゲーム起動時に自動的に実行されるため、変数の初期化や保持に適している。ゲームのロジックを記述したgame.msファイルとは別に管理することで、ゲームのリセット時にスコアが保持される。

記事では、Mini Microを念頭に置いたヒントも提供されている。Mini Microでは、画面上のオブジェクト(パドル、ボール、壁など)はスプライトとして扱われる。パドルはキー入力で縦方向に移動し、画面外に出ないように制限する必要がある。ボールはX軸とY軸方向に移動し、その速度はBall.xSpeedBall.ySpeedといったプロパティに格納できる。衝突判定は、ボールが画面の上下端に触れた場合はY方向の速度を反転させ、パドルに触れた場合はX方向とY方向の速度を反転させることで実現できる。Ball.contains(Flipper1)は、衝突判定の例だ。

スコアは、score.Player1score.Player2のような変数で管理する。ボールがパドルを通過した場合、相手のスコアを増やし、必要に応じてボールやゲームの状態をリセットする。ボールの速度を上げるには、+=演算子を使用し、方向を変えるには速度に-1を掛ける。例えば、Ball.xSpeed = Ball.xSpeed * -1とすると、X軸方向の速度が反転する。whileループを使用する場合は、最後にyieldキーワードを追加する必要がある。

【ITニュース解説】Learn By Code 1.4 | いっしー@Webエンジニア