Pythonで作るボールキャッチゲーム|tkinterを使ったシンプルなゲーム開発入門
Pythonはデータ分析やWeb開発だけでなく、コンピューターゲームの作成にも活用できます。本記事では、Pythonを使って「ボールキャッチゲーム」を作成する方法を解説します。このゲームでは、キャンバスウィンドウの上部からボールが次々と落下し、ウィンドウ下部には移動可能なバーが配置されています。マウスでボタンをクリックしてバーを左右に動かし、落ちてくるボールを受け止めるというシンプルながら楽しいゲームです。ボールは毎回異なる位置から落下するため、反射神経も試されます。
実装のアプローチ
このゲームを構築するための手順は、以下のステップに沿って進めます。
ステップ1 − tkinterで長方形のキャンバスを作成します。このキャンバスは、図形・テキスト・画像などの各種レイアウトを配置する土台となります。
ステップ2 − 上部から落下するボールを作成します。create_oval メソッドを使用します。このメソッドは4つの座標を受け取り、円と長方形の中間的な形状である楕円を描画します。
ステップ3 − マウス操作で左右に移動できるバーを画面下部に作成します。ここでは create_rectangle メソッドを使用します。
ステップ4 − canvas.move メソッドを使って、ボールやバーを移動させます。このメソッドは、対象オブジェクトを縦方向・横方向のどちらにも動かせる汎用的なものです。
ステップ5 − 下部のバーを操作するためのボタンを作成します。ボタンにはイベントを設定し、クリックされたタイミングで処理が実行されるようにします。
プログラム全体
以下は、上記のステップに基づき、関連するメソッドとオブジェクトを使用して記述した完全なプログラムです。
コード例
#Pythonで作るボールキャッチゲーム
from tkinter import Tk, Button, Label
from tkinter import Canvas
from random import randint
base = Tk()
base.title("BALL GAME")
base.resizable(False, False)
color = Canvas(base, width=590, height=610)
color.pack()
standard = 0
length = 5
marks = 0
class model:
def __init__(self, color, m1, n1, m2, n2):
self.m1 = m1
self.n1 = n1
self.m2 = m2
self.n2 = n2
self.color = color
self.circle = color.create_oval(self.m1, self.n1, self.m2, self.n2,fill="blue", tags='dot1')
def Game(self):
offset = 5
global standard
if standard >= 510:
global length, marks, next
if (length - offset <= self.m1 and
length + 40 + offset >= self.m2):
marks += 5
color.delete('dot1')
game_play()
else:
color.delete('dot1')
slide.remove(self)
result()
return
standard += 1
self.color.move(self.circle, 0, 1)
self.color.after(10, self.Game)
class slide:
def __init__(self, color, m1, n1, m2, n2):
self.m1 = m1
self.n1 = n1
self.m2 = m2
self.n2 = n2
self.color = color
self.num = color.create_rectangle(self.m1, self.n1, self.m2, self.n2, fill="green", tags='dot2')
def push(self, num):
global length
if (num == 1):
self.color.move(self.num, 20, 0)
length += 20
else:
self.color.move(self.num, -20, 0)
length -= 20
def remove(self):
color.delete('dot2')
def game_play():
global standard
standard = 0
size = randint(0, 570)
game1 = model(color, size, 20, size + 30, 50)
game1.Game()
def result():
base2 = Tk()
base2.title("THE BALL GAME")
base2.resizable(False, False)
set = Canvas(base2, width=300, height=300)
set.pack()
z = Label(set, text="\nGame over\n\nYou have scored = " + str(marks) + "\n\n")
z.pack()
btx = Button(set, text="Enter if you want to play again", bg="yellow", command=lambda: repeat(base2))
btx.pack()
bty = Button(set, text=" CLOSE ", bg="red",command=lambda: destroy(base2))
bty.pack()
def repeat(base2):
base2.destroy()
function()
def destroy(base2):
base2.destroy()
base.destroy()
def function():
global marks, length
marks = 0
length = 0
x1 = slide(color, 5, 560, 45, 575)
Bt0 = Button(color, text="move right**", bg="pink",command=lambda: x1.push(1))
Bt0.place(x=335, y=580)
Bt1 = Button(color, text="**move left ", bg="pink", command=lambda: x1.push(0))
Bt1.place(x=260, y=580)
game_play()
base.mainloop()
if (__name__ == "__main__"):
function()実行結果
上記のコードを実行すると、以下のような画面が表示されます。

-
Pythonを使ってLinuxターミナルでテキストを装飾表示する方法
Linuxターミナルにおけるテキスト装飾の基本 本記事では、Pythonを使ってLinuxターミナル上に整形(装飾)されたテキストを出力する方法を解説します。フォーマット機能を活用すれば、文字色やスタイルだけでなく、点滅といった特殊な視覚効果も自由に付与できます。 Linuxターミナルは、ANSIエスケープシーケンスと呼ばれる制御コードに対応しており、これによって文字装飾やカラー表示などが実現できます。仕組みとしては、テキストの中に特定のバイト列を埋め込み、ターミナルがそれを解釈するタイミングで指定した書式が反映されるというものです。 ANSIエスケープシーケンスの基本構文は次のとおりです。
-
【Python】Tkinterで作るカラーゲーム – 30秒で文字の色を当てるGUIゲーム開発
GUIアプリケーションの開発において、Pythonの標準ライブラリ「Tkinter」は非常に人気が高く、初心者でも扱いやすいツールです。追加のインストール作業なしに使えるため、Tkinterを活用すればシンプルなGUIゲームでも手軽に開発できます。 この記事では、Tkinterを使った「カラーゲーム」の作り方を紹介します。このゲームでは、画面に表示される単語の文字色をプレイヤーが入力し、正解するたびにスコアが1点ずつ加算されます。制限時間は30秒で、使用される色は赤(Red)、青(Blue)、緑(Green)、ピンク(Pink)、黒(Black)、黄(Yellow)、オレンジ(Orange)、