學習Python之小練習(飛機大戰)(4)

2021-09-27 09:03:50 字數 2103 閱讀 9988

今天接著更新小遊戲

物件導向的方法進行遊戲框架搭建

根據遊戲主程式職責,設計planegame

新建 plane_main.py 主程式檔案,在其中寫入遊戲主程式

附上** ,裡面有注釋,都挺詳細的

plane_main 遊戲主程式

# -*- coding: utf-8 -*-

import pygame

from plane_sprites import *

class planegame(object):

"""飛機大戰主遊戲

"""def __init__(self):

print("遊戲初始化...")

# 1.建立遊戲視窗

self.screen = pygame.display.set_mode(screen_rect.size)

# 2.建立遊戲時鐘

self.clock = pygame.time.clock()

# 3.呼叫私有方法,建立精靈和精靈組

self.__create_sprites__()

def __create_sprites__(self):

pass

def start_game(self):

print("遊戲開始...")

while true:

# 1. 設定重新整理幀率

self.clock.tick(frame_per_sec)

# 2. 事件監聽

self.__event_handler__()

# 3. 碰撞檢測

self.__check_collide__()

# 4. 繪製/更新精靈組

self.__update_sprites__()

# 5. 更新顯示

pygame.display.update()

pass

def __event_handler__(self):

for event in pygame.event.get():

if event.type == pygame.quit:

planegame.__game_over__()

def __check_collide__(self):

pass

def __update_sprites__(self):

pass

# 定義靜態方法,因為不需要用到類屬性

@staticmethod

def __game_over__():

print("遊戲結束!")

pygame.quit()

exit()

if __name__ == '__main__':

# 建立遊戲物件

game = planegame()

# 啟動遊戲

game.start_game()

plane_sprites.py精靈組工具包

# -*- coding: utf-8 -*-

import pygame

# 建立螢幕大小的常量

screen_rect = pygame.rect(0, 0, 480, 700)

# 重新整理幀率常量

frame_per_sec = 60

class gamesprite(pygame.sprite.sprite):

"""飛機大戰遊戲精靈

"""def __init__(self, image_name, speed=1):

# 呼叫父類的初始化方法

super().__init__()

# 定義屬性

self.image = pygame.image.load(image_name)

self.rect = self.image.get_rect()

self.speed = speed

def update(self, *args):

# 在垂直方向向上移動

self.rect.y += self.speed

休息。。。。。。

學習Python之小練習(飛機大戰)(2)

昨天我們繪製完成了遊戲的基本影象,今天繼續分享 先貼上昨天的執行結果 繼續我們今天的分享,先來分享一下遊戲時鐘 我們平時看到的遊戲畫面都是動態的,那麼如果我們要看到畫質比較清晰,那麼每秒我們的遊戲畫面就要重新整理60次以上,所以我們就要設定遊戲的重新整理幀率 再來說一下我們的螢幕重新整理該放在 昨天...

Python 學習 小例子練習

網上了點小例子,練習一下下,都是特別簡單的。而且這些 也都是找的網上的 目的是在於練習一下python和熟悉下python的編碼風格等等 學習一門語言,最快的方法就是把它用在世界的開發中,這樣才能不斷的理解,積累,單純的靠看書,感覺是沒有太大的用途的一點一點慢慢來 第乙個,有1 2 3 4個數字,能...

python學習之相關練習

1.用物件導向的方式實現堆疊的資料結構 後進先出 指令碼編寫如下 class stack object 將棧定義為乙個類 def init self,stack self.stack stack defmanystack self,args 進棧方法 self.stack.extend args d...