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

歡迎訪問 生活随笔!

生活随笔

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

python

python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践

發布時間:2024/4/18 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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章 武装飞船 之 调整飞船的速度程序实践的全部內容,希望文章能夠幫你解決所遇到的問題。

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