2025年12月5日金曜日

【Pythonゲーム開発】#2.黒い画面におさらば!「GUI」と「CUI」の違いを知ろう

 

はじめに

環境構築、お疲れ様でした。 さて、今回からいよいよPythonコードを書いていきますが、その前に一つだけ、絶対に知っておかなければならない概念があります。

それは「CUI」と「GUI」の違いです。

 ここを理解していないと、「print()したのに画面に文字が出ない!」「while Trueしたら画面が固まった!」という、初心者が必ず踏む地雷を踏むことになります。

1. CUI(Character User Interface)とは?

これまで皆さんがPythonの勉強で見てきたのは、おそらくこちらでしょう。 その名の通り、「文字(Character)」によって情報を表示し、操作する方式です。

  • 見た目: 黒い画面(ターミナル / コマンドプロンプト)に文字が並んでいる。

  • 表現方法: すべての結果は「文字列」として出力されます。

  • 特徴: 基本的なPythonの学習コードのように、上から下へ処理が流れる記述が多くなります(※高度な制御を行えばインタラクティブな動作も可能ですが、基本はテキストベースです)。

計算結果をログとして見るだけならこれで十分ですが、私たちが普段遊んでいるような「絵」が動くゲームを作るには、別の仕組みが必要です。

2. GUI(Graphical User Interface)とは?

これから私たちが作ろうとしているのがこちら。 「画像(Graphic)」や図形、ウィンドウを使って情報を視覚的に表現する方式です。

  • 見た目: ウィンドウ、ボタン、画像、メニューバー。

  • 表現方法: ピクセル単位で図形や画像を自由に描画できます。

  • 特徴: ユーザーのマウス操作やキー入力に対して、リアルタイムに画面が変化します。

3. ゲーム作りで変わる「プログラムの形」

学校の授業などで習う基本的なプログラムと、GUIアプリでは、コードの構造が少し変わります。

  • 基本的なスクリプト処理: 「入力 → 計算 → 出力」をして、仕事が終わったらプログラムが終了します。

‣Pythonコード
name = input("名前は?")
print("こんにちは、" + name)
# ここで終了


  • GUIのイベント駆動処理: ウィンドウを出したら、「無限ループ」に入って、ユーザーの操作を待ち続けます。これを「イベントループ」と呼びます。
‣Pythonコード
app = QApplication()
window.show()
app.exec() # ここで無限ループ開始(ウィンドウを閉じるまで終わらない)

この「無限ループ」の中にいるからこそ、ゲーム画面は消えずに表示され続け、プレイヤーの操作にいつでも反応できるのです。

4. 実践!PySide6で「空のウィンドウ」を出す

理屈はここまでにして、実際にGUIの世界への扉を開けてみましょう。 以下のコードをVS Codeに貼り付けて実行してみてください。

‣Pythonコード

はじまり---------------------------------------------

import sys

from PySide6.QtWidgets import QApplication, QWidget

# 1. アプリケーション(管理人のようなもの)を作る

app = QApplication(sys.argv)

# 2. ウィンドウ(キャンバス)を作る

window = QWidget()

window.setWindowTitle("私の初めてのGUI") # タイトル設定

window.resize(400, 300) # サイズ設定 (400px, 300px)

# 3. ウィンドウを画面に表示する

window.show()

# 4. イベントループ(無限待機)を開始する

# これがないと、一瞬でプログラムが終了してウィンドウが消えます

sys.exit(app.exec())

おわり---------------------------------------------




 実行して、何も書かれていない真っ白なウィンドウが表示されましたか? おめでとうございます! これがあなたのゲームの「画用紙」です。 文字だけの世界(CUI)を卒業し、自由な描画ができる世界(GUI)へ足を踏み入れました。

次回予告

ウィンドウは出ましたが、まだ真っ白です。 次回は、この画用紙の上に図形を描くための筆、「QPainter」の使い方を学びます。

Next Step: 【#3】四角形や円を描いてみよう(QPainter基礎編)

0 件のコメント:

コメントを投稿

【Pythonゲーム開発 】#4.ゲームの心臓「メインループ」を作ろう(QTimer編)

 はじめに  前回、画面に四角形を描くことができましたが、まだ動きません。 ゲームとは、パラパラ漫画のように「少しずつ動かした絵」を高速で切り替えることで成立しています。多くの初心者はここで「while Trueループで回せばいいんでしょ?」と考えますが、GUIアプリでそれをやる...