用python做遊戲的細節詳解

2022-10-04 17:15:11 字數 3339 閱讀 7226

pygame是乙個python的庫,能夠讓你更容易的寫出乙個遊戲。它提供的功能包括處理和聲音重放的功能,並且它們能很容易的整合進你的遊戲裡。去官網點選這裡**適合你的pygame安裝包。

我們就拿***來做個例子

1 .建立遊戲框架以及遊戲背景

#這個模組放一些常用的工具和基礎類和精靈類

#在其他模組呼叫

import pygame

import random

#設定遊戲螢幕大小 這是乙個常量

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

#敵機的定時器事件常量

create_enemy_event = pygame.userevent

#定製乙個精靈類,需要繼承pygame提供的精靈類

#需要定義的屬性有:

#image

#rect座標

#speed速度

#接下來開始寫敵機方面的內容 產生敵機

#先定義乙個事件常量

create_enemy_event = pygame.userevent

#我們還可以定義乙個事件常量(發射子彈)

hero_fire_event = pygame.userevent + 1

class gamesprite(pygame.sprite.sprite):

def __init__(self,new_image,new

super().__init__()

#self.image = pygame.image.load(new_image)

#速度self.speed = new_speed

#位置 獲取的寬和高 get_rect()(0,0,寬,高)

self.rect = self.image.get_rect()

#精靈移動的速度 包括英雄精靈 背景精靈 敵機精靈 子彈精靈

self.speed = new_speed

def update(self):

#預設垂直方向移動 y軸控制垂直方向

self.rect.y += self.speed

#self.rect.x += 1

#以上是遊戲的基礎類,接下來設定背景類

#明確背景類繼承自遊戲的精靈類

class background(gamesprite):

irutobxmy def __init__(self,is_alt = false):

#is_alt判斷是否為另一張影象

#false表示第一張影象

#ture表示另外一張影象

#兩張影象交替迴圈

#傳super().__init__("/home/zhangyuan/**/beijing.png")

if is_alt:

#如果是第二張 初始位置為-self.rect.height

self.rect.y = -self.rect.height

#def __init__(self,new_image):

# super().init__(new_image)

def update(self):

#呼叫父類方法

super().update()

if self.rect.y >= screen_rect.height:

self.rect.y = -self.rect.height

2 .建立敵機精靈

class enemy(gamesprite):

def __init__(self):

super().__init__("/home/zhangyuan/images/enemy1.png")

#隨機速度

self.speed = random.randint(10, 15)

#設定敵機的初始位置

self.rect.left = screen_rect.width

max_ = screen_rect.height -self.rect.height

self.rect.bottom = random.randint(0, max_)

def update(self):

panduan = random.randint(0, 1)

if panduan == 0:

self.rect.y -= self.speed

self.rect.x -= self.speed

else:

self.rect.y += self.speed

self.rect.x -= swww.cppcns.comelf.speed

#判斷敵機是否飛出螢幕 如果飛出螢幕將敵機從精靈組刪除

if self.rect.y >= screen_rect.height or self.rect.right <=0 or self.rect.bottom <=0:

self.kill()

3 .建立英雄精靈

class bullet(gamesprite):

def __init__(self):

super().__init__("/home/zhangyuan/images/bullet1.png",-5)

def update(self):

super().update()

irutobxmy #判斷是否超出螢幕 如果是 從精靈組刪除

if self.rect.bottom < 0:

self.kill()

5 .碰撞檢測

#第乙個引數和第二個引數是要參與碰撞檢測的精靈

#第三個引數為ture的時候 就是當碰撞的時候被碰撞的精靈從精靈組移除

pygame.sprite.groupcollide( self.enemy_group,self.hero.bullet, true, true)#子彈

www.cppcns.com

#判斷列表時候有內容

if len(enemies)>0:

#讓英雄犧牲

self.hero.kill()

#結束遊戲

planegame.__game_over()

@staticmethod

def __game_over():

print("遊戲結束")

#這是pygame提供的解除安裝模組功能

pygame.quit()

#這是pygame本身提供的退出指令碼的功能

exit()

#需要先解除安裝pygame模組 然後退出指令碼

if __name__ == "__main__":

game = planegame()

game.star_game()

本文標題: 用python做遊戲的細節詳解

本文位址:

Python 用pyinstrument做效能分析

在計算密集型計算或一些web應用中,我們常常需要對 做效能分析。在python中,最原始的方法即是使用time包中的time函式 該函式以秒為計時單位 from time import sleep,time def func1 sleep 0.001 def func2 sleep 2 begin1...

用html css js做打地鼠小遊戲

連線 網盤共享 打地鼠 title link rel stylesheet href first.css head body section section span id count 得分 為0 span audio src audio music.loop true autoplay autop...

用Python做科學計算

python是一種物件導向的 動態的程式語言,具有非常簡潔而清晰的語法,既可以用於快速開發程式指令碼,也可以用於開發大規模的軟體,特別適合於完成各種高層任務。隨著numpy,scipy,matplotlib,enthought librarys等眾多程式庫的開發,python越來越適合於做科學計算。...