日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pygame里面物体闪烁运动_Pygame-游戏中的运动

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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-游戏中的运动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。