python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
生活随笔
收集整理的這篇文章主要介紹了
python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一個文件,main.py是主程序?
#main.py import sys import pygame from settings import Settings from ship import Ship import update as pt def run_game():my_set = Settings()pygame.init()screen = pygame.display.set_mode(my_set.set_mode)my_ship = Ship(screen,my_set)pygame.display.set_caption(my_set.set_caption)while True:pt.update(my_ship,screen,my_set) run_game()第二個文件:settings.py
class Settings():def __init__(self):self.color = (255,255,255)self.set_mode = (1000,800)self.new_speed_factor = 1.5self.set_caption = 'ship invasion'第三個文件:update.py
#update.py import pygame import sys def check_events(ship):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.moving_right = Trueif event.key == pygame.K_LEFT:ship.moving_left = Trueif event.key == pygame.K_UP:ship.moving_up = Trueif event.key == pygame.K_DOWN:ship.moving_down = Trueelif event.type == pygame.KEYUP: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 update(ship,screen,settings):check_events(ship)ship.update()#特別要注意:填充顏色的下面這句話一定要在繪圖之前進行(也就是要放在ship.blitme之前,否則#顏色會覆蓋掉前面的繪好的圖形)screen.fill(settings.color)ship.blitme()pygame.display.flip()第四個文件:ship.py
import pygame import sys class Ship():def __init__(self,screen,settings):self.settings = settingsself.screen = screenself.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.center = float(self.rect.centerx)self.moving_left = Falseself.moving_right = Falseself.moving_up = Falseself.moving_down = Falsedef blitme(self):self.screen.blit(self.image,self.rect)def update(self):if self.moving_right == True:self.center += self.settings.new_speed_factorif self.moving_left == True:self.center -= self.settings.new_speed_factorif self.moving_up == True:self.rect.bottom -= 1if self.moving_down == True:self.rect.bottom += 1self.rect.centerx = self.center本文所用到的ship.bmp和alien.bmp的下載? ?鏈接: https://pan.baidu.com/s/1Dn5yaQGZLIsN0BohM8PzoA ?密碼: 38ie
?
注:以上程序只是提高了橫向的速度,縱向移動速度并沒有改變,如果要改變縱向移動速度,必須改變ship.py文件,自己改動的代碼如下(其它文件不變):
import pygame import sys class Ship():def __init__(self,screen,settings):self.settings = settingsself.screen = screenself.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.center_x = float(self.rect.centerx)self.center_y = float(self.rect.bottom)self.moving_left = Falseself.moving_right = Falseself.moving_up = Falseself.moving_down = Falsedef blitme(self):self.screen.blit(self.image,self.rect)def update(self):if self.moving_right == True:self.center_x += self.settings.new_speed_factorif self.moving_left == True:self.center_x -= self.settings.new_speed_factorif self.moving_up == True:self.center_y -= self.settings.new_speed_factorif self.moving_down == True:self.center_y += self.settings.new_speed_factorself.rect.centerx = self.center_xself.rect.bottom = self.center_y隨著代碼越來越長,我們隊update.py文件進行重構,把check_events()的部分代碼放在不同的文件中,update.py文件重新布置代碼如下:
import pygame import sys def check_keydown_events(event,ship):if event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:ship.moving_right = Trueif event.key == pygame.K_LEFT:ship.moving_left = Trueif event.key == pygame.K_UP:ship.moving_up = Trueif event.key == pygame.K_DOWN:ship.moving_down = True def check_keyup_events(event,ship):if event.type == pygame.KEYUP: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):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type == pygame.KEYDOWN: #因為上面已經定義過函數check_keydown_events,所以可以直接使用check_keydown_events(event,ship)elif event.type == pygame.KEYUP: #因為上面已經定義過函數check_up_events,所以下面也可以直接使用check_keyup_events(event,ship) def update(ship,screen,settings):check_events(ship)ship.update()screen.fill(settings.color)ship.blitme()pygame.display.flip()注意:在update.py文件中,的update函數里,screen.fill函數一定要放在blitme函數之前,否則顏色會覆蓋掉繪好的圖形,也就是盡早填充顏色
總結
以上是生活随笔為你收集整理的python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ primer 5th 练习11.
- 下一篇: 关于map的下标操作的2个例子