在前一篇文章《python小歡喜(六)動畫 (1) pygame的安裝與初步使用》中介紹了如何安裝pygame。接下來咱們用pygame做一些有趣的動畫效果
顯示笑臉圖片
# -*- coding:utf-8 -*-
# showPic.py
# 顯示笑臉圖處
import
pygame
# 導入pygame模塊
pygame
.
init
(
)
screen
=
pygame
.
display
.
set_mode
(
[
800
,
600
]
)
keep_going
=
True
pic
=
pygame
.
image
.
load
(
"CrazySmile.bmp"
)
#加載當前目錄下的圖片文件 CrazySmile.bmp
while
keep_going
:
# 事件處理循環
for
event
in
pygame
.
event
.
get
(
)
:
if
event
.
type
==
pygame
.
QUIT
:
keep_going
=
False
screen
.
blit
(
pic
,
(
100
,
100
)
)
pygame
.
display
.
update
(
)
pygame
.
quit
(
)
# 退出
從源碼可知,該程序要能夠正確執行,當前目錄下需要有一個圖片文件 CrazySmile.bmp
以上只是顯示了一副靜止的圖片,接下要讓圖片動起來
彈跳的笑臉
python代碼如下:
# -*- coding:utf-8 -*-
# 移動的笑臉
import
pygame
# 導入pygame模塊
pygame
.
init
(
)
screen
=
pygame
.
display
.
set_mode
(
[
600
,
600
]
)
keep_going
=
True
pic
=
pygame
.
image
.
load
(
"CrazySmile.bmp"
)
#加載當前目錄下的圖片文件 CrazySmile.bmp
colorkey
=
pic
.
get_at
(
(
0
,
0
)
)
pic
.
set_colorkey
(
colorkey
)
picx
=
0
picy
=
0
BLACK
=
(
0
,
0
,
0
)
timer
=
pygame
.
time
.
Clock
(
)
speed
=
5
while
keep_going
:
# 事件處理循環
for
event
in
pygame
.
event
.
get
(
)
:
if
event
.
type
==
pygame
.
QUIT
:
keep_going
=
False
picx
+=
speed
# 當speed大于0時,增加圖片的X坐標值,否則減少
picy
+=
speed
# 當speed大于0時,增加圖片的Y坐標值,否則減少
if
picx
<=
0
or
picx
+
pic
.
get_width
(
)
>=
600
:
speed
=
-
speed
#當到達窗口邊緣時,速度取反
screen
.
fill
(
BLACK
)
screen
.
blit
(
pic
,
(
picx
,
picy
)
)
pygame
.
display
.
update
(
)
timer
.
tick
(
60
)
pygame
.
quit
(
)
# 退出
帶尾巴的移動的笑臉
實現效果如下:
python代碼如下:
# -*- coding:utf-8 -*-
# 帶尾巴的移動的笑臉
import
pygame
# 導入pygame模塊
pygame
.
init
(
)
screen
=
pygame
.
display
.
set_mode
(
[
800
,
600
]
)
keep_going
=
True
pic
=
pygame
.
image
.
load
(
"CrazySmile.bmp"
)
#加載當前目錄下的圖片文件 CrazySmile.bmp
colorkey
=
pic
.
get_at
(
(
0
,
0
)
)
pic
.
set_colorkey
(
colorkey
)
picx
=
0
picy
=
0
BLACK
=
(
0
,
0
,
0
)
timer
=
pygame
.
time
.
Clock
(
)
speedx
=
5
speedy
=
5
while
keep_going
:
# 事件處理循環
for
event
in
pygame
.
event
.
get
(
)
:
if
event
.
type
==
pygame
.
QUIT
:
keep_going
=
False
picx
+=
speedx
# 當speedx大于0時,增加圖片的X坐標值,否則減少
picy
+=
speedy
# 當speedy大于0時,增加圖片的Y坐標值,否則減少
if
picx
<=
0
or
picx
+
pic
.
get_width
(
)
>=
800
:
speedx
=
-
speedx
#當到達窗口邊緣時,速度取反
if
picy
<=
0
or
picy
+
pic
.
get_height
(
)
>=
600
:
speedy
=
-
speedy
#當到達窗口邊緣時,速度取反
#screen.fill(BLACK) # 不做"擦黑板"的操作,達到累加效果,顯示出尾巴
screen
.
blit
(
pic
,
(
picx
,
picy
)
)
pygame
.
display
.
update
(
)
timer
.
tick
(
60
)
pygame
.
quit
(
)
# Exit
以上動畫效果的實現原理,請查看源碼及注釋,應該不難理解。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
