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

使用Python寫一個小游戲

 更新時間:2018年04月02日 16:10:22   作者:人工智能的秘密  
這篇文章主要介紹了使用Python快速寫一個小游戲,本次開發(fā)的小游戲叫alien invasion,具體實現(xiàn)過程大家參考下本文

引言

最近python語言大火,除了在科學(xué)計算領(lǐng)域python有用武之地之外,在游戲、后臺等方面,python也大放異彩,本篇博文將按照正規(guī)的項目開發(fā)流程,手把手教大家寫個python小游戲,來感受下其中的有趣之處。本次開發(fā)的游戲叫做alien invasion。

安裝pygame并創(chuàng)建能左右移動的飛船

安裝pygame

本人電腦是windows 10、python3.6,pygame下載地址: 傳送門

請自行下載對應(yīng)python版本的pygame 運行以下命令

$ pip install wheel
$ pip install pygame‑1.9.3‑cp36‑cp36m‑win_amd64.whl

創(chuàng)建Pygame窗口及響應(yīng)用戶輸入

新建一個文件夾alien_invasion,并在文件夾中新建alien_invasion.py文件,輸入如下代碼。

import sys
import pygame
def run_game():
  #initialize game and create a dispaly object
  pygame.init()
  screen = pygame.display.set_mode((1200,800))
  pygame.display.set_caption("Alien Invasion")
  # set backgroud color
  bg_color = (230,230,230)
  # game loop
  while True:
    # supervise keyboard and mouse item
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        sys.exit()
    # fill color
    screen.fill(bg_color)
    # visualiaze the window
    pygame.display.flip()
run_game()

運行上述代碼,我們可以得到一個灰色界面的窗口:

$ python alien_invasion.py

創(chuàng)建設(shè)置類

為了在寫游戲的過程中能便捷地創(chuàng)建一些新功能,下面額外編寫一個settings模塊,其中包含一個Settings類,用于將所有設(shè)置存儲在一個地方。這樣在以后項目增大時修改游戲的外觀就更加容易。 我們首先將alien_invasion.py中的顯示屏大小及顯示屏顏色進行修改。 首先在alien_invasion文件夾下新建python文件settings.py,并向其中添加如下代碼:

class Settings(object):
  """docstring for Settings"""
  def __init__(self):
    # initialize setting of game
    # screen setting
    self.screen_width = 1200
    self.screen_height = 800
    self.bg_color = (230,230,230)

然后再alien_invasion.py中導(dǎo)入Settings類,并使用相關(guān)設(shè)置,修改如下:

import sys
import pygame
from settings import Settings
def run_game():
  #initialize game and create a dispaly object
  pygame.init()
  ai_settings = Settings()
  screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
  pygame.display.set_caption("Alien Invasion")
  # set backgroud color
  bg_color = (230,230,230)
  # game loop
  while True:
    # supervise keyboard and mouse item
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        sys.exit()
    # fill color
    screen.fill(ai_settings.bg_color)
    # visualiaze the window
    pygame.display.flip()
run_game()

添加飛船圖像

接下來,我們需要將飛船加入游戲中。為了在屏幕上繪制玩家的飛船,我們將加載一幅圖像,再使用Pygame()方法blit()繪制它。 在游戲中幾乎可以使用各種類型的圖像文件,但是使用位圖(.bmp)文件最為簡單,這是因為Pygame默認加載位圖。雖然其他類型的圖像也能加載,但是需要安裝額外的庫。我們推薦去免費的圖片素材網(wǎng)站上去找圖像: 傳送門 。我們在主項目文件夾(alien_invasion)中新建一個文件夾叫images,將如下bmp圖片放入其中。

接下來,我們創(chuàng)建飛船類ship.py:

import pygame
class Ship():
  def __init__(self,screen):
    #initialize spaceship and its location
    self.screen = screen
    # load bmp image and get rectangle
    self.image = pygame.image.load('image/ship.bmp')
    self.rect = self.image.get_rect()
    self.screen_rect = screen.get_rect()
    #put spaceship on the bottom of window
    self.rect.centerx = self.screen_rect.centerx
    self.rect.bottom = self.screen_rect.bottom
  def blitme(self):
    #buld the spaceship at the specific location
    self.screen.blit(self.image,self.rect)

最后我們在屏幕上繪制飛船,即在alien_invasion.py文件中調(diào)用blitme方法:

import sys
import pygame
from settings import Settings
from ship import Settings
def run_game():
  #initialize game and create a dispaly object
  pygame.init()
  ai_settings = Settings()
  screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
  ship = Ship(screen)
  pygame.display.set_caption("Alien Invasion")
  # set backgroud color
  bg_color = (230,230,230)
  # game loop
  while True:
    # supervise keyboard and mouse item
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
        sys.exit()
    # fill color
    screen.fill(ai_settings.bg_color)
    ship.blitme()
    # visualiaze the window
    pygame.display.flip()
run_game()

重構(gòu):模塊game_functions

在大型項目中,經(jīng)常需要在添加新代碼前重構(gòu)既有代碼。重構(gòu)的目的是為了簡化代碼的結(jié)構(gòu),使其更加容易擴展。我們將實現(xiàn)一個game_functions模塊,它將存儲大量讓游戲Alien invasion運行的函數(shù)。通過創(chuàng)建模塊game_functions,可避免alien_invasion.py太長,使其邏輯更容易理解。

函數(shù)check_events()

首先我們將管理事件的代碼移到一個名為check_events()的函數(shù)中,目的是為了隔離事件循環(huán)

import sys
import pygame
def check_events():
  #respond to keyboard and mouse item
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      sys.exit()

然后我們修改alien_invasion.py代碼,導(dǎo)入game_functions模塊,并將事件循環(huán)替換成對函數(shù)check_events()的調(diào)用:

import sys
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
def run_game():
  #initialize game and create a dispaly object
  pygame.init()
  ai_settings = Settings()

總結(jié)

以上所述是小編給大家介紹的Python寫一個小游戲,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python導(dǎo)入數(shù)值型Excel數(shù)據(jù)并生成矩陣操作

    Python導(dǎo)入數(shù)值型Excel數(shù)據(jù)并生成矩陣操作

    這篇文章主要介紹了Python導(dǎo)入數(shù)值型Excel數(shù)據(jù)并生成矩陣操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 把Anaconda中的環(huán)境導(dǎo)入到Pycharm里面的方法步驟

    把Anaconda中的環(huán)境導(dǎo)入到Pycharm里面的方法步驟

    這篇文章主要介紹了把Anaconda中的環(huán)境導(dǎo)入到Pycharm里面的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python 識別登錄驗證碼圖片功能的實現(xiàn)代碼(完整代碼)

    python 識別登錄驗證碼圖片功能的實現(xiàn)代碼(完整代碼)

    這篇文章主要介紹了python 識別登錄驗證碼圖片功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Python中的深拷貝和淺拷貝詳解

    Python中的深拷貝和淺拷貝詳解

    這篇文章主要介紹了Python中的深拷貝和淺拷貝詳解,本文講解了變量-對象-引用、可變對象-不可變對象、拷貝等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Python字符串的常見操作實例小結(jié)

    Python字符串的常見操作實例小結(jié)

    這篇文章主要介紹了Python字符串的常見操作,結(jié)合實例形式總結(jié)分析了Python字符串的查詢、轉(zhuǎn)換、分割、計算等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • python3下實現(xiàn)搜狗AI API的代碼示例

    python3下實現(xiàn)搜狗AI API的代碼示例

    這篇文章主要介紹了python3下實現(xiàn)搜狗AI API的代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python中reduce()函數(shù)的用法詳細解讀

    Python中reduce()函數(shù)的用法詳細解讀

    這篇文章主要介紹了Python中reduce()函數(shù)的用法詳細解讀,reduce函數(shù)是通過函數(shù)對迭代器對象中的元素進行遍歷操作,但需要注意的是?reduce?函數(shù)返回的是計算的結(jié)果,而?map/filter?返回的是作用后的迭代器對象,需要的朋友可以參考下
    2023-08-08
  • Python的flask接收前臺的ajax的post數(shù)據(jù)和get數(shù)據(jù)的方法

    Python的flask接收前臺的ajax的post數(shù)據(jù)和get數(shù)據(jù)的方法

    這篇文章主要介紹了Python的flask接收前臺的ajax的post數(shù)據(jù)和get數(shù)據(jù)的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Python安裝Graphviz?超詳細圖文教程

    Python安裝Graphviz?超詳細圖文教程

    這篇文章主要介紹了Python安裝Graphviz?詳細教程,在Python安裝Graphviz畫圖器,首先要明確他是一個獨立的軟件,如果大家用pip的方法裝了graphviz可以先卸載,本文通過圖文并茂的形式詳細講解,需要的朋友參考下吧
    2023-02-02
  • python標識符命名規(guī)范原理解析

    python標識符命名規(guī)范原理解析

    這篇文章主要介紹了python標識符命名規(guī)范原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01

最新評論

宜春市| 尼勒克县| 清水河县| 原阳县| 大竹县| 乐东| 竹北市| 木兰县| 濮阳市| 崇阳县| 浮山县| 同德县| 华容县| 多伦县| 天台县| 延安市| 淮北市| 太保市| 安宁市| 印江| 资源县| 青海省| 科尔| 内乡县| 南澳县| 巴彦县| 张北县| 济阳县| 孟州市| 和田市| 石河子市| 清镇市| 建始县| 本溪市| 泸定县| 漠河县| 唐山市| 阿巴嘎旗| 西城区| 马龙县| 东城区|