Pythonで簡易版の弾き語りゲームを書きます。


前にいくつかの種類の知識点について話しましたが、クラスの概念をよりよく把握し、活用するために、面白いパチンコのゲームを書いています。一つは種類の知識を融合させて、もう一つはPythonに対する興味を深めます。あれ、Pythonがミニゲームを書くのはとても便利です。面白いです。
まず私達の最終効果図を見てください。

私たちは9歩に分けてこのゲームの書き方を説明します。
1.ゲームのメイン画面を作成する
私たちはPythonの内蔵モジュールTkinterを使って完成しました。Pythonの標準GUIツールバッグです。GUIツールを作るにはとても便利です。プラットフォームをまたぐので、winとlinuxの下で運行できます。Tkのcanvasのグラフィック機能で小さなゲームを作ります。まずメインインターフェースを描きます。

(1).tkを作成する例
(2)この窓口に名前をつけてください。gameといいます。
(3)ウィンドウマネージャにレイアウトのサイズを調整するように通知します。0,0は引き上げられないことを表します。
(4)長さ400*500のインターフェースを作成します。背景色はデフォルトで、フレームの厚さは0です。
(5).通知ウィンドウマネージャ登録コンポーネント
(6).画面を更新する
2.ボールのクラスを作成する
良いメインインターフェースがありました。私たちはボールを作り始めました。
(1)まずBallのクラスを作成します。このクラスの初期化パラメータは二つあります。
一つのcanvasつまり絵を描いてボールを描きます。一つはカラーです。ボールの色を表しています。
(2)クラスの初期化の関数の中で
初期化canvas、
ソリッドボールを描き、IDを記録します。
作成したボールのデフォルトのメインインターフェースの位置を画面の真ん中に置きます。
次にボールをメインインターフェースに表示させます。


3.ボールを上に動かしましょう。
先ほどボールの中にdraw関数がありました。私達は今drawに何かを入れてボールを上に動かしています。

4.ボールを跳ね返す
(1)第三段階でボールが上に移動できます。今は壁に触れてバウンスします。
私たちは先ほどself.canvas.moveを0と書きました。-1はx座標が動かないことを表しています。y座標が絶えない-1はボールが上に運動しています。
私たちはこの二つの値を二つの変数self.x,self.yに設定します。私たちのボールが上の境界に移動する時、self.yをプラスして、下の方向に運行します。
下の境界に運動する時、self.yを1減らして、上へ運行することを表します。

(2)では、ボールが壁にぶつかったとどう判断しますか?簡単です。私たちは動態的にボールを外す座標[x 1,y 1,x 2,y 2]を表します。
x 1,y 1はtop-left左上隅の座標を表します。
x 2,y 2はbottom-right右下の座標を表します。
ボールの座標を取ってから、pos[1]とpos[3]を判断すればいいです。

5.ボールの進行方向を増やす
今私達のボールの運動方向は固定されています。毎回のボールの運動方向はランダムにしてほしいです。でないと、lowすぎます。どうすればいいですか?ランダム関数を簡単に追加すればいいです。
呷にいますinit_()関数の中で、変更します。
self.x=0
self.y=-1
変更:
starts=[-3、-2、-1,1,2,3]
ラドm.shuffle(starts)
self.x=starts[0]啱はリストからランダムに一つを取ります。
self.y=-3〓はy軸運動の速度を表します。
6.小板を増やす
今私達のボールはもうインタフェースの上であちこち逃げ回ることができます。今は板を増やしてボールを打ちます。


7.板を移動させる
いくつかのキーボードイベントを結びつけることで、板を移動させます。
2つの関数を追加して、左に移動して、右に移動して、evtは何ですか?

def turn_left(self, evt):

self.x = -2

def turn_right(self, evt):

self.x = 2
Paddleの初期化関数には、2つのキーボードイベントが結合されています。
キーボードの左ボタンを押すと、self.turn_に応答します。left
キーボードの右ボタンを押すと、self.turn_に応答します。ライト
evtはシステムに登録するイベントです。

8.ボールと板の衝突を増やす
今はボールもあります。板もあります。そして左右に動かすことができます。今は一番素晴らしい部分が上演されます。ボールを増やして板に触れてから反発します。それではどうやってボールが板に触れたかを判断します。簡単にボールの種類の中に関数を追加して衝突したかどうかを判断します。

def draw(self):

--snip--

if self.hit_paddle(pos) == True:

self.y = -3

--snip--

9.ボールが最後までゲームが終わると判断する
上の8ステップを経て、ゲームの大体の機能ができました。ゲームが終わったとどう判断しますか?ボールが底を動かす時(ボールが地面に触れたと考えられます。)ゲームは失敗しました。コードを何行追加すればいいですか?

class Ball():

def __init__(self,canvas,paddle,color):

--snip--

self.hit_bottom=False

def draw(self):

--snip--

if pos[3]>=self.canvas_height:#                 

self.hit_bottom=True

--snip--

paddle=Paddle(canvas,"blue")

ball=Ball(canvas,paddle,"red")

while 1:

if ball.hit_bottom==False and ball.paddle.started :

ball.draw()

paddle.draw()

tk.update_idletasks()

tk.update()

time.sleep(0.01)


ソースは約100行で簡単な機能を実現しました。実はこのゲームはまた多くの機能を追加できます。例えば、スコアを記録して、ゲームの開始と終了のヒントを追加して、ボードとボールの種類を増加して、パイプカードと難易度を増加して、みんな自分でプレイして、書き終わってとても達成感があります。
ここでPythonで簡易版のパチンコについての文章を紹介します。これまでの文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。