2D游戏开发(1)

时间:2022-09-17 16:27:00

《外星人入侵》

通过pygame,入门python的2D游戏开发过程,通过教材制作一个打外星人游戏。

1、函数 run_game()

import sys

import pygame

def run_game():

   #初始化游戏,并创建一个屏幕对象

   pygame.init()   

   screen = pygame.display.set_mode((1200, 800))

   pygame.display.set_caption("Alien Invasion")

   #开始游戏的主循环

   while True:

       #监视键盘、鼠标的操作

       for event in pygame.event.get():

           if event.type == pygame.QUIT:

               sys.exit()

       #让屏幕可视化

       pygame.display.flip()

run_game()

这段函数导入了2个模块,sys 、pygame。模块pygame包含了开发游戏所需要的功能,玩家退出时需要使用模块sys来进退出。

pygame.init()进背景初始化,让pygame可以正确的工作。在这里使用pygame.display.set_mode()来创建一个名为screen的显示窗口。

元组(1200,800)指定了游戏窗口的大小。

这个游戏的主体,由一个while循环控制,这个while循环包含了一个循环事件以及管理屏幕更新的代码。

事件是用户玩游戏时执行的操作,如 按键,移动鼠标。为让程序响应事件,我们编写了一个事件循环,以侦听事件,并根据发生的事件执行

响应的任务。这里的for循环就是完成这个工作。

例如:

玩家点击游戏窗口的关闭按钮时,将检测到pygame.QUIT事件,进而程序将调用sys.exit()来退出游戏。

pygame.display.flip()的功能是让pygame最近绘制的屏幕课间,在这里它每次执行while循环时都会绘制一个空屏幕,并擦去旧屏幕,使得只有

新屏幕课间。在我们移动游戏元素时,pygame.display.flip()将不断更新屏幕,以显示元素的新位置。

在最后一行,调用了run_game(),这将初始化游戏并开始主循环,此时运行代码就会看到一个空的pygame窗口。

2D游戏开发(1)的更多相关文章

  1. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

  2. 关于《Unity3D/2D游戏开发从0到1》书籍再版说明

    关于<Unity3D/2D游戏开发从0到1>第一版本在2015年7月1日全国发行,累计得到不少国内高校教师.培训机构的好评.但是由于Unity官方对于技术不断的升级与版本的快速迭代,基于U ...

  3. 《Unity3D&sol;2D游戏开发从0到1(第二版本)》 书稿完结总结

    前几天,个人著作<Unity3D/2D游戏开发从0到1(第二版)>经过七八个月的技术准备以及近3个月的日夜编写,在十一长假后终于完稿.今天抽出一点时间来,给广大热心小伙伴们汇报一下书籍概况 ...

  4. 《Unity3D&sol;2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  5. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

  6. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  7. Unity 2D游戏开发教程之2D游戏的运行效果

    Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑问 ...

  8. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  9. Unity 2D游戏开发教程之游戏精灵的开火状态

    Unity 2D游戏开发教程之游戏精灵的开火状态 精灵的开火状态 “开火”就是发射子弹的意思,在战争类型的电影或者电视剧中,主角们就爱这么说!本节打算为精灵添加发射子弹的能力.因为本游戏在后面会引入敌 ...

  10. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

随机推荐

  1. NetCDF 入门

    一.概述  NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”,对程序员来说,它和zip.jpeg.bmp文件格式类似,都是一种文件格式的标准.ne ...

  2. &period;net走向设计2—设计工具

    1.思维导图 2.项目管理工具 3.常用UML工具 4.数据库设计工具

  3. php中pdo例子

    下面是从其他博客看到的代码 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $db ...

  4. iOS学习-----真机测试过程

    原文 http://www.th7.cn/Program/IOS/201407/233103.shtml   1:进入苹果开发者平台 2:进入Member Center 3:输入开发者账号和密码 4: ...

  5. css3 画x图形

    .m-act-del{ right:; top:; margin-top: -6px; position: absolute; display: inline-block; width: 20px; ...

  6. 字符串匹配 - KMP算法

    #include<cstdio> #include<cstring> #include<cstdlib> void GetNext(char *t,int *nex ...

  7. phpmyadmin安装出错,缺少 mysqli 扩展。请检查 PHP 配置

    下载了个phpmyadmin最新版本的,始终显示这样的内容,求助.如何解决哈?>缺少 mysqli 扩展.请检查 PHP 配置. <a href="Documentation.h ...

  8. C&num;应用程序隐藏调用bat脚本

    做c#应用程序有些调用windows自带的bat脚本会比较方便 Process proc; proc = null; try { string targetDir = GetParentUrl() + ...

  9. Spring Cloud构建微服务架构(六)高可用服务注册中心

    http://blog.didispace.com/springcloud6/ https://www.jianshu.com/p/df9393755a05 http://www.ityouknow. ...

  10. 657&period; Robot Return to Origin

    Description There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequenc ...