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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3 pygame的发射子弹自编程序

發布時間:2024/4/18 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 pygame的发射子弹自编程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是主程序1.py

#1.py主程序 import sys import pygame from settings import Settings from ship import Ship from gamefunctions import update_screen from bullet import Bullet from gamefunctions import check_events from pygame.sprite import Group def run_game():pygame.init()my_set = Settings()screen = pygame.display.set_mode(my_set.set_mode)my_ship = Ship(screen,my_set)screen = pygame.display.set_mode(my_set.set_mode)pygame.display.set_caption(my_set.set_caption)bullets = Group()while True:update_screen(my_ship,my_set,screen,bullets)run_game()

這是bullet.py子彈定義的程序?

#bullet.py 這是子彈的定義程序 import pygame #導入精靈的類Sprite,用于創建子彈,精靈方便用pygame.sprite的組Group管理子彈 from pygame.sprite import Sprite #定義子彈的類Bullet,這是一個繼承類,繼承了類Sprite class Bullet(Sprite):def __init__(self,ai_settings,screen,ship):#初始化父類super().__init__()self.screen = screen#定義表示子彈的長方形,位置為屏幕左上角(0,0)self.rect = pygame.Rect(0,0,ai_settings.bullet_width,ai_settings.bullet_height)#設置子彈的位置為飛船的頂部self.rect.centerx = ship.rect.centerxself.rect.top = ship.rect.top#定義self.py表示飛船的位置,這里為了微調子彈,所以定義為一個float對象self.y = float(self.rect.y)#存儲子彈顏色self.color = ai_settings.bullet_color#子彈的速度self.speed_factor = ai_settings.bullet_speed_factordef update(self):#這個函數更新子彈的位置,子彈向屏幕上方移動,橫坐標不變,所以只需要改變縱坐標self.y -= self.speed_factor#把self.py賦值給子彈的縱坐標self.rect.y =self.ydef draw_bullet(self):#下面這句是表示在屏幕上繪制子彈pygame.draw.rect(self.screen,self.color,self.rect) #gamefunctions.py import pygame import sys #因為下面要創建子彈實例,所以必須導入表示子彈的類 from bullet import Bullet def check_keydown(event,ship,screen,bullets,settings):if event.key == pygame.K_DOWN:ship.moving_down = Trueif event.key == pygame.K_UP:ship.moving_up = Trueif event.key == pygame.K_LEFT:ship.moving_left = Trueif event.key == pygame.K_RIGHT:ship.moving_right = Trueif event.key == pygame.K_SPACE:#創建一個子彈new_bullet = Bullet(settings,screen,ship)#把子彈加入組bullets中,bullets是一個Group,一會方便用這個Group對象管理所有子彈#特別是方便更新子彈的位置bullets.add(new_bullet)#放開按鍵不用增加別的代碼,因為放開按鍵對子彈沒有什么影響 def check_keyup(event,ship):if event.key == pygame.K_RIGHT:ship.moving_right = Falseif event.key == pygame.K_LEFT:ship.moving_left = Falseif event.key == pygame.K_UP:ship.moving_up = Falseif event.key == pygame.K_DOWN:ship.moving_down = False def check_events(ship,screen,bullets,settings):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()if event.type == pygame.KEYDOWN:check_keydown(event,ship,screen,bullets,settings)if event.type == pygame.KEYUP:check_keyup(event,ship) def update_screen(ship,settings,screen,bullets):check_events(ship,screen,bullets,settings)ship.update()screen.fill(settings.color)#刷新子彈位置bullets.update()ship.blitme()#對bullets中每一個子彈,都繪制到屏幕上,sprites()得到所有子彈的一個類似列表的對象for bullet in bullets.sprites():bullet.draw_bullet()#下面是屏幕刷新程序,在刷新前必須繪制子彈pygame.display.flip()

我們可以發現, 某個函數中要建立類,那么只需要導入這個類即可,這個類需要的其它類不需要導入,只需要在函數參數表中出現即可

#settings.py 這是設置程序 class Settings():def __init__(self):self.set_mode = (1000,800)self.set_caption = "alien invasion"self.speed_factor = 1.5self.color = (255,255,255)self.bullet_speed_factor = 1self.bullet_color = 60,60,60self.bullet_width = 3self.bullet_height = 15 #ship.py import pygameclass Ship():def __init__(self,screen,settings):self.screen = screenself.settings = settingsself.image = pygame.image.load("ship.bmp")self.rect = self.image.get_rect()self.screen_rect = self.screen.get_rect()self.rect.centerx = self.screen_rect.centerxself.rect.bottom = self.screen_rect.bottomself.moving_left = Falseself.moving_right = Falseself.moving_up = Falseself.moving_down = Falseself.center_x = float(self.rect.centerx)self.settings = settingsdef blitme(self):self.screen.blit(self.image,self.rect)def update(self):if self.moving_left and self.rect.left > 0:self.center_x -= self.settings.speed_factorif self.moving_right and self.rect.right < self.screen_rect.right:self.center_x += self.settings.speed_factorif self.moving_up:self.rect.bottom -= 1if self.moving_down:self.rect.bottom += 1self.rect.centerx = self.center_x

本文所用到的ship.bmp的下載? ?鏈接: https://pan.baidu.com/s/1Dn5yaQGZLIsN0BohM8PzoA ?密碼: 38ie

運行結果:

注意幾個問題:

1.有時候定義類的對象的時候,少幾個參數編譯器是檢測不出來的。

2.定義矩形的代碼是:pygame.Rect(0,0,width,height),這里的R是大寫的,如果寫成小寫,會報告以下錯誤:

self.rect = pygame.rect(0,0,settings.bullet_width,settings.bullet_height) TypeError: 'module' object is not callable

這是目前自己學習是pygame中的第一個以大寫字母開頭的pygame的方法

3.精靈的英文是:sprite,讀作[spra?t]

總結

以上是生活随笔為你收集整理的python3 pygame的发射子弹自编程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本女优在线看 | 免费视频亚洲 | 激情六月婷婷 | 日韩亚洲欧美在线观看 | 五月香蕉网 | 日日摸夜夜添狠狠添久久精品成人 | 国产免费久久 | 成人av免费网址 | 蜜臀久久精品久久久久久酒店 | 黄色网免费 | 5月婷婷6月丁香 | 黄色免费网站在线 | 91超薄丝袜肉丝一区二区 | 日韩九九九 | 少妇流白浆| 亚洲欧美精品一区 | 绯色av一区二区三区高清 | 欧美丰满美乳xxⅹ高潮www | 三级欧美视频 | 色图色小说 | 欧美大黑b| 精品香蕉视频 | 日本美女黄色大片 | 美国黄色一级大片 | av黄网站| 亚洲精品在线观看免费 | 成人av免费| 少妇又紧又色又爽又刺激视频 | 光明影院手机版在线观看免费 | 天天天天 | 免费成人在线播放 | 黄色不雅视频 | 国产成人精品一区在线播放 | 欧美日韩不卡一区二区 | 亚洲福利视频导航 | 亚洲精品视频网 | 饥渴少妇伦色诱公 | 国产盗摄一区二区 | 中文字幕在线观看视频一区二区 | www.欧美在线观看 | 国产精品九九热 | a级性生活视频 | 最近国语视频在线观看免费播放 | 久久亚洲精品中文字幕 | 精品中文字幕一区二区 | 国产一区二区三区视频免费观看 | 91国内精品久久久久 | 美美女高清毛片视频免费观看 | 熟妇高潮一区二区高潮 | 日韩有码专区 | 国产成人无码精品久久久久 | 五月丁香 | 色综合视频在线观看 | 麻豆乱码国产一区二区三区 | 女人扒开腿让男人桶爽 | 精品在线播放 | 自拍偷拍视频在线观看 | 日韩欧美精品在线播放 | 亚洲一区av在线 | 久久伊人中文字幕 | 成都电影免费大全 | 久久久久久久久久久99 | 国内外成人在线视频 | 午夜羞羞羞 | 国产亚洲二区 | 色www国产亚洲阿娇 自拍一区在线 | 主播福利在线 | 国产精品99久久久久久动医院 | 超碰青草 | 亚洲激情一区二区 | 欧美一区一区 | 啪啪视屏 | 波多野结衣免费视频观看 | 日本成人网址 | 亚洲福利在线观看 | 国产精品第6页 | 一区二区毛片 | 日韩a∨| 96av在线| 亚洲综合另类 | 黑名单上的人全集免费观看 | 极品美女高潮出白浆 | 人人干人人插 | 国产猛男猛女超爽免费视频 | 美日韩一级 | 一区二区三区黄色片 | 99一区二区 | 亚洲狼人天堂 | 久久久久久久久久久久久女国产乱 | 天干夜夜爽爽日日日日 | 强开小受嫩苞第一次免费视频 | 国产精品午夜一区二区 | 国产精品毛片一区二区在线看 | 人与动物黄色片 | 天天在线观看 | 久久噜噜噜精品国产亚洲综合 | 五月天中文字幕av | 91禁在线动漫 | 免费av小说 |