pygame里面物体闪烁运动_Pygame-游戏中的运动
本來,在上一次pygame的教程中,我只是順手拿了微信“打飛機”里的圖來演示用鼠標控制圖片位置的操作。后來覺得,這個游戲還算比較適合用來做例子,也有朋友反饋說想做這個游戲,那不如就以“打飛機”為例來說python游戲開發好了。
今天,就再進一步:既然要打飛機,那得能發射子彈才行。所以從最簡單的做起,來給游戲加上“一顆”子彈。
上次的背景圖和飛機圖,我自己稍微處理了下,包括這一課要用到的子彈圖片,都放在論壇上,需要的自行下載。
大體的思路是這樣的:
1.用之前在屏幕上繪制飛機的方法,再繪制一張很小的子彈圖片。補充一下:當你需要繪制一張帶透明部分的圖片時,要用convert_alpha()替代之前的convert(),具體用法參見代碼中。
2.子彈被發射的位置是飛機的位置,也就是鼠標的位置。注意,要讓它們的中心點對齊,而不是左上角對齊,處理方法我們已經說過。
3.讓這個子彈往上運動。還記得我在第2課《游戲的本質》里面說的嗎:在游戲主循環中,要處理物理運動。所以在程序中要做的就是,每次循環里,把子彈圖片的y坐標減少一個量(因為屏幕左上角的坐標是(0,0))。為了能記住子彈上一次循環中的位置,要有變量專門來記錄子彈的坐標值。
4.當子彈移動到屏幕上方外部之后(y坐標小于0),再把它的位置重置回發射的位置。這樣看上去就是又一顆子彈被發射出來了,盡管我們一直是在操作同一張圖片。游戲中經常會使用到諸如此類的小技巧,來欺騙你的視覺,這也是我覺得開發游戲很有意思的一個地方,好像是在變魔術。
5.為了看起來更符合常理,你得把子彈的圖片放在飛機的圖片下面,這樣看上去才會是從飛機上發射出去,而不是憑空冒出來的。在程序中,就是先繪制子彈,再繪制飛機,像是畫油畫,后畫的會覆蓋掉先畫的。
6.我在一開始就將子彈的位置設到屏幕上方之外,這樣它就會自動被循環內的條件判斷給重置位置,而不需要我再額外手動去初始化它的位置。
理清了如上的思路之后,能不能搞定代碼了?如果能的話,就先別往下看,試著在程序里寫寫看。
以下是我的實現代碼:
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# -*- coding: utf-8 -*-
importpygame
fromsysimportexit
pygame.init()
screen=pygame.display.set_mode((450,800),0,32)
pygame.display.set_caption("Hello, World!")
background=pygame.image.load('back.jpg').convert()
plane=pygame.image.load('plane.png').convert_alpha()
bullet=pygame.image.load('bullet.png').convert_alpha()
#加載子彈圖像
bullet_x=0
bullet_y=-1
#初始化子彈位置
whileTrue:
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
pygame.quit()
exit()
screen.blit(background,(0,0))
x,y=pygame.mouse.get_pos()
ifbullet_y<0:
#如果子彈位置超出了屏幕上端
bullet_x=x-bullet.get_width()/2
bullet_y=y-bullet.get_height()/2
#把子彈的中心位置設為鼠標坐標
else:
bullet_y-=5
#子彈的位置往上移
screen.blit(bullet,(bullet_x,bullet_y))
#把子彈畫到屏幕上
x-=plane.get_width()/2
y-=plane.get_height()/2
screen.blit(plane,(x,y))
pygame.display.update()
聲明:
本文采用
BY-NC-SA
協議進行授權,如無注明均為原創,轉載請注明轉自
個人編程學習網
本文地址:
Pygame-游戲中的運動
總結
以上是生活随笔為你收集整理的pygame里面物体闪烁运动_Pygame-游戏中的运动的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 如何给苹果iPhone手机中的软件上锁
- 下一篇: 什么叫接触性皮炎
