最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的有趣之处。本次开发的游戏叫做alien invasion。

安装pygame

本人电脑是windows 10、python3.6,pygame下载地址: 传送门

请自行下载对应python版本的pygame 运行以下命令

$ pip install wheel

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

创建Pygame窗口及响应用户输入

新建一个文件夹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()

运行上述代码,我们可以得到一个灰色界面的窗口:

创建设置类

为了在写游戏的过程中能便捷地创建一些新功能,下面额外编写一个settings模块,其中包含一个Settings类,用于将所有设置存储在一个地方。这样在以后项目增大时修改游戏的外观就更加容易。 我们首先将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中导入Settings类,并使用相关设置,修改如下:

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

接下来,我们创建飞船类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文件中调用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()

重构:模块game_functions

在大型项目中,经常需要在添加新代码前重构既有代码。重构的目的是为了简化代码的结构,使其更加容易扩展。我们将实现一个game_functions模块,它将存储大量让游戏Alien invasion运行的函数。通过创建模块game_functions,可避免alien_invasion.py太长,使其逻辑更容易理解。

函数check_events()

首先我们将管理事件的代码移到一个名为check_events()的函数中,目的是为了隔离事件循环

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代码,导入game_functions模块,并将事件循环替换成对函数check_events()的调用:

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

以上所述是小编给大家介绍的Python写一个小游戏,希望对大家有所帮助,如果大家有任何疑问请给我留言

如果有想一起学习交流Python,获取更多Python学习干货的朋友可以关注我主页哦~

不定期更新关于Python学习的各种方法窍门与避坑指南!

(转自脚本之家)

使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!相关推荐

  1. 使用python制作聊天框解谜游戏_Python实现小黑屋游戏的完整实例

    大一上学期学习的内容之一,小黑屋比较好玩. 1.导入函数库 先导入random.time两个函数库的使用来达到随机生成人物.生成人物加载时间的目的. import random import time ...

  2. java小游戏大鱼吃小鱼入门(15min写一个小游戏)

    [mie haha的博客]转载请注明出处(万分感谢!): https://blog.csdn.net/qq_40315080/article/details/82823954 写代码前分析下游戏的各个 ...

  3. python写游戏脚本-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  4. python编程小游戏-使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  5. 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏

    教你如何用 Python 写一个小游戏 引言 最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项 ...

  6. 关于python小游戏的毕业论文_使用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下 ...

  7. HTML5游戏_基于DOM平台跳跃小游戏开发_9.按键监听

    HTML5游戏_基于DOM平台跳跃小游戏开发 按键监听 视频讲解 HTML5游戏 效果图 本章知识点: 对象自定义名称属性,可以用变量来命名属性名称 //这段代码把多个属性(品牌, 型号, 排量)赋给 ...

  8. python能制作游戏吗_如何用python写一个小游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...

  9. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

最新文章

  1. 网络抖动多少ms算正常_男性身高175,体重多少算正常?对照公式算一下,你达标了吗?...
  2. java key值_java-必须为此操作提供PartitionKey值
  3. java网络文章博客抓取系统_java 后端博客系统文章系统——No3
  4. 渤海发现大油田,证券会提示风险,微博回应流量造假,刘国梁制定史上最严奖惩体系,这就是今天的大新闻。...
  5. 怎么清空topic数据_20.Roscpp/Rospy:Topic_demo
  6. 漫画:跑上百万次代码验证三门问题
  7. 分析两个网页设计思路
  8. python工具箱_python 工具箱
  9. 谷歌浏览器安装json-handle插件
  10. ffmpeg视频旋转 - 在线旋转视频画面在线工具
  11. 三星S6D1121主控彩屏(240*320*18bit,262K)驱动程序
  12. 【懒懒的Python学习笔记六】
  13. 擅长To C的腾讯,如何借腾讯云在这几个行业云市场占有率第一? ...
  14. 追梦算法----修路
  15. 一键卸载,跟流氓软件说拜拜~
  16. 我对 大内核锁BKL 的理解
  17. 绩效考核培训教程PPT模板
  18. vlan端口Hybrid配置
  19. WorkManager笔记: 二、管理工作
  20. RX8025AC INTA周期电平输出的疑问

热门文章

  1. DELL戴尔服务器RAID磁盘阵列默认识别更换后的硬盘
  2. [C指针] 用图表解读C声明:Unscrambling C Declarations by Diagram
  3. python 包 子文件夹调用_15步,你就能拥有自己的Python程序包
  4. Hadoop之WEBUi界面功能介绍及日志配置查看
  5. sqlserver 导入mysql,在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合...
  6. oracle删除一张表的sql语句,oracle删除表的语句
  7. c语言学习-编程实现以下功能,读入两个数(d1,d2)和一个运算符(o),计算d1 o d2的值
  8. .NET配置文件的原因、位置和方式
  9. 使用动态数据进行数据分页
  10. Abp vnext Web应用程序开发教程 3 —— 创建、更新和删除书籍