Pythonの-Day07-グラフィカル・ユーザー・インターフェースとゲーム開発

Pythonの-100Day-を学ぶことがパンチ
Seven_0507:著者
日付:2019年5月22日を
。1
2
3。

記事のディレクトリ
Pythonのグラフィカル・ユーザー・インターフェースとゲーム開発
1. Tkinterのモジュール
2 pygameのゲーム開発を
Pythonのグラフィカル・ユーザー・インターフェースとゲーム開発
1. Tkinterのモジュール
「「」
GUIを作成Tkinterの使用
-トップレベルのウィンドウを
-コントロール
-レイアウト
-イベントコールバック
」「」
Tkinterのインポート
インポートtkinter.messagebox


メインDEF():
フラグに#のクラスのプロパティ
フラグに=真

#ラベル上のテキスト変更
DEFのchange_label_text():
フラグ#ローカル以外のキーワードでローカル以外の外側の層(非グローバル)関数内の変数や他のスコープの
ないフラグにフラグ= Inを
IF内のフラグ:
カラー、MSG =(「赤」、 'こんにちは、世界!')
他:
'!さようなら、世界の色、MSG =( '青'、)
label.config(テキスト= MSG、FG =カラー)

終了確認するには#
:DEFのconfirm_to_quitを()
:tkinter.messagebox.askokcancel( 'ヒント'、 '?あなたが終了したいあなたは確かにあります')のIF
Top.quit()

#作成し、トップレベルのウィンドウ
トップtkinter.Tk =()
セットウィンドウサイズ
top.geometry(「240x160」)
は、ウィンドウのタイトルを設定し
top.title(「ミニゲーム」)
はラベルオブジェクトを作成し、トップレベルのウィンドウに追加
ラベル= tkinter.Label (トップ、テキスト= 'こんにちは、世界!'、=フォント'Arialの-32'、FG = '赤')
label.pack(=展開します。1)
ボタン取り付けられたコンテナの作成
パネルを= tkinter.Frame(トップ)
#コマンドパラメータによってバインドイベントコールバックで指定されたコンテナこれにオブジェクトを追加するボタンを作成する
ボタン1 = tkinter.Button(パネル、テキスト= 「 変更」、コマンド= change_label_text)
button1.pack(サイド=「左」)
ボタン2 = tkinter.Button (パネル、テキスト= '終了'、コマンド= confirm_to_quit)
button2.pack(横= '右')
panel.pack(横= '下')
メインイベントループ上の#ターン
tkinter.mainloop()


もし__name__ == '__main__':
メイン()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
「」「
GUIを作成Tkinterの使用
-ウィンドウのアニメーションで作る
」「」
Tkinterのインポート
インポート時間


#アニメーション再生機能
DEFのplay_animation():
canvas.move(オーバル、2、2)
canvas.update()
top.after(50、play_animation)


X = 10
、Y = 10
トップ= tkinter.Tk()
top.geometry( '600×600')
top.title( '动画效果')
top.resizable(偽、偽)
top.wm_attributes( ' -最上'、1)
キャンバス= tkinter.Canvas(上面、幅= 600、高さ= 600、BD = 0、highlightthickness = 0)
canvas.create_rectangle(0、0、600、600、= 'グレー'を満たす)
楕円= canvas.create_oval(10、10 、60、60、= '赤')を埋める
canvas.pack()
top.update()
play_animation()
tkinter.mainloopを()

#バウンス画面の端にボールを打つ方法を検討
#は上記のコード・パッケージのオブジェクト指向プログラミングのアイデア方法を検討してください
。1
2
3
4
5
6
7
8
9
10
11
12は
13である
14
15
16
17
18である
。19
20で
ある21
22がある
で23
24
25
26である
27
28
29
30
31れている
32
「「」
グラフィックモジュールカメと
、これがクロール描画用ウィンドウにカメ方法をシミュレートする非常に興味深いモジュールである
「」」
インポートカメ

turtle.pensize(3)
turtle.penup()
turtle.goto(-180、150)
turtle.pencolor( '赤')
turtle.fillcolor( 'イエロー')
turtle.pendown()
turtle.begin_fill()
の範囲内のため_ (36):
turtle.forward(200で)
turtle.right(170)
turtle.end_fill()
turtle.mainloop()
。1
2
3
4
5
6
7
8
9
10
11
12である
13である
14
15
16
17
18することで
pygameのゲーム開発2
「」「
ビッグ小さなボールゲームボールステップ食べる
-ゲームウィンドウ作る
ウィンドウに描画を-
-イメージがロードされる
アニメーションのために-
-衝突検出
。」「」
ユニークな列挙輸入列挙型、から
数学の輸入SQRTから
ランダム輸入randintから

インポートpygameのダウンロード

#衝突検出
@Uniqueの
クラスカラー(列挙型):
「」「色」「」

RED =(255、0、0)
GREEN =(0、255、0)
BLUE =(0、0、255)
BLACK =(0、0、0)
WHITE =(255、255、255)
GRAY =(242、 242、242)

@staticmethod
DEFのrandom_colorは():
"" "" "ランダム色得られた"
R&LT randint =(0、255)
Gがrandintを=(0、255)
B = randint(0、255)
リターン(R&LT、G、B)


クラスボール(オブジェクト):
"" "球" ""

デフ__init __(自己、X、Y、半径、SX、SY、色= Color.RED):
"" "初始化方法" ""
self.x = X
self.y = Y
self.radius =半径
self.sx = SX
self.sy = SYの
self.color =カラー
self.alive =真

DEF(自己画面)に移動:
"" "移动" ""
self.x + = self.sx
self.y + = self.sy
場合self.x - self.radius <= 0またはself.x + self.radius > = screen.get_width():
self.sx = -self.sx
場合self.y - self.radius <= 0またはself.y + self.radius> = screen.get_height():
self.sy = -self。 SY

:DEF(自己、他)を食べる
"" "吃其他球" ""
!:もしself.aliveとother.aliveと自己=他
other.x、self.y - - DX、DY = self.xをother.y
距離= SQRT(DX ** 2 + DY ** 2)
であれば、距離<self.radius + other.radius \
とself.radius> other.radius:
other.alive = Falseの
self.radius = self.radius + INT(他の.radius * 0.146)

デフ描く(自己画面):
"" "在窗口上绘制球" ""
pygame.draw.circle(画面、self.color、
(self.x、self.y)、self.radius、0)

#イベント処理
DEFメイン():
すべての#defineボールを保持するために使用される容器
ボール= []
pygameの初期化モジュールに導入#
pygame.init()
表示とウィンドウサイズ設定のため#ウィンドウの初期
画面= pygame.display .set_mode((800、600))
を印刷(screen.get_width())
を印刷(screen.get_height())
設定された現在のウィンドウのタイトル
pygame.display.set_caption( 'ビッグボール小さなボールを食べる')
を表現する変数を定義画面上のボールの位置
X、Y = 50、50
ランニング= Trueの
#1 -onイベント処理は、イベントループ内で行われる
中で実行されている:
#は、メッセージキューとイベント処理からイベントを取得する
(pygame.event.getのイベントのために):
:Event.typeは== pygame.quit IF
実行= Falseの
Event.type == == pygame.MOUSEBUTTONDOWNとevent.buttonをIF 1:
X、Y = event.pos
RADIUSはrandintを=(10、100)
SX、SY = randint(-10、10)、randint(-10、10)
色= Color.random_color()
ボール=ボール(X、Y、半径、SX、SY、色)
balls.append(ボール)
スクリーン。 ((255、255、255))を埋める
ボールでボールのために:
ball.alive場合:
ball.draw(画面)
他:
balls.remove(ボール)
pygame.display.flip()
每隔50毫秒就改变小球的位置再刷新窗口
pygame.time.delay(50)
ボールでボール用:
ball.move(画面)
ボールの他のために:
ball.eat(他の)


もし__name__ == '__main__':
メイン()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
pygameの1.9.6
pygameのコミュニティからこんにちは。https://www.pygame.org/contribute.html
800
600
--------------------- 

おすすめ

転載: www.cnblogs.com/hyhy904/p/10983045.html