本文所用到的ship.bmp和alien.bmp的下载   链接: https://pan.baidu.com/s/1Dn5yaQGZLIsN0BohM8PzoA  密码: 38ie

第一部分:认识pygame的简单的一些函数,利用命令简单地构造画面

我用我个人的理解逐渐剖析如何在python3中建一个窗口,里面放置一个飞船。

首先我们先来分析一些事情:

事情1:用python3,创建游戏窗口需要以下代码:

导入pygame,就是执行import pygame

导入sys,就是执行import sys,这个主要是一会调用sys.exit()结束游戏用的

首先是执行pygame.init()    这个语句会初始化pygame,使得pygame可用,里面初始化了很多组建,大约9个以内,具体什么也忘记了

其次是设置窗口大小,执行pygame.display.set_mode((1000,800)),这个执行完毕后,以后入职建立无限循环,那么就可以把它画进去。

然后值设置窗口说明,执行pygame.display.set_caption("some caption like.....")

如果要设置窗口的背景颜色,那么还需要定义一个颜色,例如(255,0,255)

接下来建立一个无限循环,就可以画出刚才定义好的窗口,代码如下:

import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((1000,900))
pygame.display.set_caption("alien invasion")
color = (0,255,255)
while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(color)pygame.display.flip()

事情2:

画一个飞船,并且显示在事情1定义的screen中:

import sys
import pygamepygame.init()
screen = pygame.display.set_mode((1000,900))#create ship screen_rect = screen.get_rect()
ship_image = pygame.image.load('image/ship.bmp')
ship_rect = ship_image.get_rect()
ship_rect.centerx = screen_rect.centerx
ship_rect.bottom =  screen_rect.bottompygame.display.set_caption("alien invasion")
color = (0,255,255)
while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#这里一定注意,先执行填充颜色,再执行填充位图,很好理解,否则飞船会被颜色覆盖#先执行screen.fill(color)screen.fill(color)#后执行填充位图screen.blit(....)screen.blit(ship_image,ship_rect)pygame.display.flip()

执行结果:

其实,代码可以简写为如下形式:

import sys
import pygamepygame.init()
screen = pygame.display.set_mode((1000,900))#create ship screen_rect = screen.get_rect()
ship_image = pygame.image.load('image/ship.bmp')
ship_rect = ship_image.get_rect()
#以下两句是改变飞船位置的,如果不改变位置,则使用默认位置,也就是左上角
#ship_rect.centerx = screen_rect.centerx
#ship_rect.bottom =  screen_rect.bottompygame.display.set_caption("alien invasion")
color = (0,255,255)
while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(color)screen.blit(ship_image,ship_rect)pygame.display.flip()

执行结果如下:

更简单的情况,画一个飞船,直接传给screen去显示:

import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((1000,800))
ship = pygame.image.load('ship.bmp')
ship_rect = ship.get_rect()
pygame.display.set_caption("alien invasion")while True:screen.fill((255,4,245))screen.blit(ship,ship_rect)pygame.display.flip()

个人看法:在一个screen内建ship,其实只要建screen和ship,并且直接把ship的图像和位置传给screen即可。screen.blit(图片,图片位置)

接下来,心血来潮,再在screen底部中央画一个alien.bmp,先把alien.bmp放置在python3代码文件同一个文件夹下,然后编写如下代码:

import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((1000,800))
pygame.display.set_caption("alien invasion")
photo = pygame.image.load('alien.bmp')
photo_rect = photo.get_rect()
screen_rect = screen.get_rect()#set the ship on the center of the screen
photo_rect.centerx = screen_rect.centerx
photo_rect.bottom  = screen_rect.bottom
while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()#screen.blit(photo,photo_rect)screen.fill((255,34,54))screen.blit(photo,photo_rect)pygame.display.flip()

执行结果:

第二部分:进阶

接下来,我们熟悉pygame的简单构造过程后,把上述代码放在类和函数中实现,实现模块化编程,如下:

ship.py文件:

#ship.py
import pygame
class Ship():
"""创建ship"""def __init__(self,screen):self.screen = screenself.screen_rect = screen.get_rect()self.image = pygame.image.load('image/ship.bmp')self.image_rect = self.image.get_rect()self.image_rect.centerx = self.screen_rect.centerxself.image_rect.bottom = self.screen_rect.bottomdef blitme(self):"""在screen中画创建出的ship"""self.screen.blit(self.image,self.image_rect)~                                                               

下面是文件3.py

#文件3.py
import sys
import pygame
from ship import Ship
def run_game():
"""创建动画"""pygame.init()screen = pygame.display.set_mode((1000,800))pygame.display.set_caption("ship is come here")#create a exampleship = Ship(screen)color = (255,255,255)while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(color)#screen.blit(ship.image,ship.image_rect)ship.blitme()pygame.display.flip()
run_game()

然后把ship.bmp,放在当前文件夹的image文件夹下 ,准备运行

在ubuntu中执行命令(在windows中执行命令是python 3.py)

python3 3.py

运行结果:

接下来,继续优化程序,把颜色,caption,screen的宽度和高度等信息单独放在一个设置文件中,那么现在我们一共有3个程序文件了,还有一个图片文件,所以要运行程序共需要4个程序,

文件ship.py

#文件ship.py
import pygame
class Ship():"""创建ship"""def __init__(self,screen):self.screen = screenself.screen_rect = screen.get_rect()self.image = pygame.image.load('image/ship.bmp')self.image_rect = self.image.get_rect()self.image_rect.centerx = self.screen_rect.centerxself.image_rect.bottom = self.screen_rect.bottomdef blitme(self):"""在screen中画ship"""self.screen.blit(self.image,self.image_rect)

文件settings.py

class Settings():def __init__(self):self.color = (255,255,255)self.set_width = 1000self.set_height = 800self.caption = "alien ship"

文件ship_game.py

#文件ship_game.py
#它的功能是:构造动画的主程序
import sys
import pygame
from settings import Settings
from ship import Ship
def run_game():pygame.init()myset = Settings()screen = pygame.display.set_mode((myset.set_width,myset.set_height))pygame.display.set_caption(myset.caption)#create a exampleship = Ship(screen)while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(myset.color)#screen.blit(ship.image,ship.image_rect)ship.blitme()pygame.display.flip()
run_game()

文件ship.bmp放在当前文件夹image下,

接下来运行文件,ubuntu中是:

python3 ship_game.py

windows中是(注意windows中如果相对路径找不到ship.bmp文件,那就使用绝对路径):

python ship_game.py

python3 用pygame 简单建一个飞船模型相关推荐

  1. bpy建一个uuv模型

    bpy是Blender的Python API,可以使用Python编写脚本来操作Blender.你可以使用bpy来建立一个UUV(无人潜水器)模型. 要建立UUV模型,你可以使用bpy的模型创建工具( ...

  2. 用Python3和Pygame实现简单的开心消消乐游戏

    用Python3和Pygame实现简单的开心消消乐游戏 项目简介 项目思路 现存Bug 项目截图 项目简介 项目Git:https://github.com/Accright/py-icehappy. ...

  3. html制作nba网页,NBA篮球_实用电脑小技巧:通俗解答html 自己动手建一个非常简单的网页_沪江英语...

    沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. html是什么,什么是html通俗解答: 通俗的讲h ...

  4. 教师节html源码,教师节_实用电脑小技巧:通俗解答html 自己动手建一个非常简单的网页_沪江英语...

    沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. html是什么,什么是html通俗解答: 通俗的讲h ...

  5. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  6. 2020 简单分析为什么有了实体类pojo还要建一个实体类Vo来继承extend?

    分析为什么有了实体类pojo还要建一个实体类Vo来继承extend? 1.首先了解下两者概念 VO: 视图对象,用于展示层,它的作用是把某页面的所有数据封装起来.通常用于业务层之间的数据传递,和 PO ...

  7. 用pygame写一款飞船游戏(笔记)

    pygame为创建一款游戏提供了很多方便地操作,下面将会用此写一款打飞机游戏.使用的版本为python3.笔记可能有些许错误,请见谅. 最后游戏界面如下: 游戏大致想法:外星人水平移动,碰到左右边缘x ...

  8. pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  9. pygame为游戏添加背景_万能的Python和Pygame模块构建一个游戏框架

    通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏.这次,我将展示 ...

最新文章

  1. 模板 - 拓扑排序
  2. 如何自定义制表符到空格的转换因子?
  3. JVM内存状况查看方法和分析工具
  4. 解决gnome3 不能设置无线网络属性
  5. CSDN博客 专用备份工具
  6. 开源纯C#工控网关+组态软件(七)数据采集与归档
  7. OAuth2,JWT,Open-ID Connect和其他令人困惑的事物
  8. Java高并发之BlockingQueue
  9. 计算机二级考试科目python难吗_计算机二级python考试难吗
  10. 在一个IPython Notebook单元中显示多个图像?
  11. sql server序列_在SQL Server中实现序列聚类
  12. 设计模式(三)模版方法(行为型)
  13. VMware虚拟机找不到USB设备该怎么办?
  14. fedora10 linux内核,自己动手编译Linux2.6.25.10内核(Fedora 7)
  15. 机器学习(七):贝叶斯之新闻分类器
  16. 中国十大电商网站优势与劣势分析
  17. 走进全球互联网中枢,顶级域名服务器的分布
  18. c语言line函数编写画六边形,canvas 画六边形
  19. 2009-2020年天猫“双十一”成交额统计情况
  20. FCES2019第二天 | BY AI,AI技术赋能教育的N种可能

热门文章

  1. MySQL Infobright 数据仓库快速安装笔记[转]
  2. Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session
  3. 新建学生类,分别计算3个科目的总和
  4. 基于python爬虫技术的应用_基于Python爬虫技术的应用
  5. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
  6. iOS逆向之hook框架frida的安装和使用
  7. 2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 省赛 - Python大学组 - A. 门牌制作
  8. 【STM32】I2C相关函数和类型
  9. 【ARM】Tiny4412裸板编程之蜂鸣器
  10. 计算机应用专业毕业设计总结,6.1-7(3)2005年计算机应用技术专业毕业生毕业设计和毕业答辩工作总结0207-ZH...