最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python做游戲的細節(jié)詳解

 更新時間:2019年06月25日 17:06:04   作者:(*-*)浩  
在本篇內容里小編給大家分享的是關于python做游戲的細節(jié)相關知識點內容,有需要的朋友們跟著學習下。

PyGame是一個Python的庫,能夠讓你更容易的寫出一個游戲。它提供的功能包括圖片處理和聲音重放的功能,并且它們能很容易的整合進你的游戲里。去官網點擊這里下載適合你的PyGame安裝包。

大家可以參閱:Python中pygame安裝方法圖文詳解

我們就拿打飛機來做個例子

1 .創(chuàng)建游戲框架以及游戲背景

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

#在其他模塊調用

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

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

HERO_FIRE_EVENT = pygame.USEREVENT + 1

 

class GameSprite(pygame.sprite.Sprite):

  def __init__(self,new_image,new_speed=1):

    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):

  def __init__(self,is_alt = False):

    #is_alt判斷是否為另一張圖像

    #False表示第一張圖像

    #Ture表示另外一張圖像

    #兩張圖像交替循環(huán)

    #傳圖片

    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 .創(chuàng)建敵機精靈

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 -= self.speed

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

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

    self.kill()

3 .創(chuàng)建英雄精靈

class Bullet(GameSprite):

 

    def __init__(self):

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

    def update(self):

      super().update()

 

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

   if self.rect.bottom < 0:

     self.kill()

5 .碰撞檢測

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

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

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

#判斷列表時候有內容

  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的BP神經網絡及異或實現過程解析

    基于python的BP神經網絡及異或實現過程解析

    這篇文章主要介紹了基于python的BP神經網絡及異或實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Python之Trimesh庫的使用方式

    Python之Trimesh庫的使用方式

    這篇文章主要介紹了Python之Trimesh庫的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python利用Pillow處理圖像的實踐指南

    Python利用Pillow處理圖像的實踐指南

    Pillow,是Python?Imaging?Library?(PIL)的一個分支,用于處理圖像,這篇文中主要來和大家詳細講講Pillow處理圖像的具體方法,感興趣的小伙伴可以了解一下
    2023-05-05
  • python 循環(huán)結構練習題

    python 循環(huán)結構練習題

    這篇文章主要給大家分享的是python 循環(huán)結構練習題,求兩個數最大公約數、整數反轉:如12345,輸出54321等多個練習題,需要的朋友可以參考一下
    2021-11-11
  • Python中elasticsearch插入和更新數據的實現方法

    Python中elasticsearch插入和更新數據的實現方法

    這篇文章主要介紹了Python中elasticsearch插入和更新數據的實現方法,需要的朋友可以參考下
    2018-04-04
  • Python中Yield的基本用法

    Python中Yield的基本用法

    這篇文章主要給大家介紹了關于Python中Yield的基本用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • python向MySQL數據庫插入數據的操作方法

    python向MySQL數據庫插入數據的操作方法

    這篇文章主要介紹了python向MySQL數據庫插入數據,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • python字典基本操作實例分析

    python字典基本操作實例分析

    這篇文章主要介紹了python字典基本操作,實例分析了Python的打印輸出、刪除、賦值等常用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python最大連續(xù)區(qū)間和動態(tài)規(guī)劃

    Python最大連續(xù)區(qū)間和動態(tài)規(guī)劃

    這篇文章主要介紹了Python最大連續(xù)區(qū)間和動態(tài)規(guī)劃,文章圍繞Python最大連續(xù)區(qū)間和動態(tài)規(guī)劃的相關資料展開內容,需要的小伙伴可以參考一下
    2022-01-01
  • 用Python開發(fā)app后端有優(yōu)勢嗎

    用Python開發(fā)app后端有優(yōu)勢嗎

    在本篇文章里小編給大家整理的是關于app后端開發(fā)學PHP還是Python的先關問題內容,需要的朋友們可以參考下。
    2020-06-06

最新評論

呈贡县| 邢台县| 海丰县| 阿荣旗| 个旧市| 平顺县| 千阳县| 平塘县| 枝江市| 基隆市| 合江县| 萝北县| 出国| 丹巴县| 迭部县| 龙州县| 泾川县| 虞城县| 陇川县| 遂昌县| 台中县| 伊春市| 清河县| 隆德县| 扎兰屯市| 贡觉县| 慈溪市| 东乡县| 沛县| 汪清县| 乡宁县| 五原县| 贺州市| 葫芦岛市| 义马市| 中江县| 景德镇市| 沙洋县| 玉山县| 乐亭县| 阳东县|