python笔记07-----(学习自清华大学出版社的python从入门到精通的配套视频)

python笔记----Pygame 游戏开发

1.游戏的原理
2.安装Pygame
pip install pygame
豆瓣源形式: pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pygame
3.Pygame 常用模块
官方网址:https://pygame.org/
例子:使用窗口模块
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((320,240))
while True:
#添加检测事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sysy.exit()
pygame.quit()
4.pygame 的基本使用
例子:制作一个跳跃的小球游戏
步骤:创建窗口、添加小球、移动小球、检测碰撞
import pygame
import sys
#初始化pygame
pygame.init()
size = width ,height = 640,480
color = (255,0,0)
screen = pygame.display.set_mode(size ) #设置窗口
ball= pygame.image.load(’./图片名称) #导入当前目录下的图片
ballrect = ball.get_rect() #获取图片位置
speed = [5,5] #设置移动速度初始值x轴、y轴
clock = pygame.time.Clock()
while True:
clock.tick(60) #每秒执行的次数
#添加检测事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sysy.exit()
ballrect = ballrect.move(speed) #移动
#碰撞检测
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.flip(color)
screen.blit(ball,ballrect(位置)) #将图片显示到窗口
pygame.display.flip() #显示窗口内容
pygame.quit()
5.开发Flappy Bird 游戏
5.1.游戏介绍
5.2.游戏分析
对象:小鸟、管道
对象属性:小鸟的存活状态
对象方法:小鸟移动、管道移动
事件:计算得分、碰撞检测
5.3.实现步骤:
5.3.1.搭建主框架
5.3.2.创建小鸟类
5.3.3.创建管道类
5.3.4.计算得分
5.3.5.碰撞检测
5.4.程序编写


```python

```python

```python

```python

```python
import pygame
import sys
class Bird(object):
	'''定义一个小鸟类‘’‘
	def __init__(self):
		'''定义初始化方法’‘’
		self.birdRect = pygame.Rect(65,50,50,50)
		#导入小鸟状态图片,放入列表中
		self.birdState = [pygame.image.load('./图片名称0),
						 pygame.image.load('./图片名称1),
						 pygame.image.load('./图片名称2)]
		#小鸟的初始化属性
		self.status = 0
		self.birdX = 120
		self.birdY = 120
		self.jump =False
		self.jumpSpeed = 10
		self.gravity =  5
		self.dead = False
	def birdUpdate(self):
		'''定义移动方法'''
		if self.jump:
			#小鸟跳跃状态
			self.jumpSpeed -=1
			self.birdY -= self.jumpSpeed
		else:
			self.gravity +=0.2
			self.birdY += self.gravity
			self.birdRect[1] = self.birdY
class Pipeline(object):
		'''定义一个管道类'''
	def __init__(self):
		'''定义初始化方法'''
		self.wallx = 400
		self.pineUp = pygame.image.load('./图片名称0)
		self.pineDown = pygame.image.load('./图片名称0)
	def updatePipeline(self):
		'''定义移动方法'''
		self.wallx -=5
		if self.wallx < -80:
			global score 
			score  +=1
			self.wallx = 400
def createMap():
	'''创建地图'''
	screen.blit(background,ballrect(位置)) #将图片显示到窗口	
	#显示管道
	screen.blit(Pipeline.pineUp,(Pipeline.wallx,-300))
	screen.blit(Pipeline.pineDown,(Pipeline.wallx,500))
	Pipeline.updatePipeline()
	#显示小鸟
	if Bird.dead:
	Bird.status = 2
	elif Bird.jump:
	Bird.status = 1
	screen.blit(Bird.birdState[Bird.status],(Bird.birdX,Bird.birdY)
	Bird.birdUpdate()   #更新小鸟状态
	#显示字体
	font.render('Score:'str(score),-1,(255,255,255))
	screen.blit(font.render('Score:'str(score),-1,(255,255,255)),(100,50))
	pygame.display.update()   #显示窗口内容
def checkDead():
	upRect = pygame.Rect(Pipeline.wallx,-300,Pipeline.pineUp.get_width(),Pipeline.pineUp.get_height())
	downRect =pygame.Rect(Pipeline.wallx,500,Pipeline.pineDown.get_width(),Pipeline.pineDown.get_height())
	#检测矩形碰撞
	if upRect.colliderect(Bird.birdRect) or downRect .colliderect(Bind.birdRect):
		Bird.dead = True
	#边界检测
	if not 0< Bird.birdRect[1] < height:
		Bird.dead = True
		return True
	else :
		return False
def getResult():
	'''获取总分'''
	final_text1 = "Game Over"
	final_text2 = "Your final score is :" + str(score)
	ft1_font = pygame.font.SysFont("Arial",70)
	ft1_surf = font.render(final_text1,1,(242,3,36))
	ft2_font = pygame.font.SysFont("Arial",70)
	ft2_surf = font.render(final_text2,1,(242,3,36))
	screen.blit(ft1_surf ,screen.get.width()/2 - ft1_surf.get_width()/2,100])
	screen.blit(ft2_surf ,screen.get.width()/2 - ft1_surf.get_width()/2,200])
	pygame.display.update()	
if __name__ == 'main__':
	'''主程序'''
	#初始化pygame
	pygame.init()
	pygame.font.init()  #初始化字体
	font=pygame.font.SysFont(None,50)
	size = width ,height = 640,480
	screen = pygame.display.set_mode(size ) #设置窗口
	clock = pygame.time.Clock()
	color = (255,0,0)
	Bird = Bird()    #实例化小鸟类
	Pipeline = Pipeline() 
	#计算得分
	score = 0
	while True:
		clock.tick(60) #每秒执行的次数
		#轮询事件检测
		for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sysy.exit()
		if event.type == (pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN) and  not Bird.dead :
			Bird.jump = True
			Bird.gravity = 5
			Bird.jumpSpeed = 10	
			background= pygame.image.load('./图片名称)  #导入当前目录下的图片
		if checkDead():
			getResult()
		else:
			createMap()
	pygame.quit()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基础入门学习Python P1. 000愉快的开始 P2. 001我和Python的第一次亲密接触 P3. 002用Python设计第一个游戏 P4. 003小插曲之变量和字符串 P5. 004改进我们的小游戏 P6. 005闲聊之Python的数据类型 P7. 006Pyhon之常用操作符 P8. 007了不起的分支和循环1 P9. 008了不起的分支和循环2 P10. 009了不起的分支和循环3 P11. 010列表:一个打了激素的数组1 P12. 011列表:一个打了激素的数组2 P13. 012列表:一个打了激素的数组3 P14. 013元组:戴上了枷锁的列表 P15. 014字符串:各种奇葩的内置方法 P16. 015字符串:格式化 P17. 016序列!序列! P18. 017函数:Python的乐高积木 P19. 018函数:灵活即强大 P20. 019函数:我的地盘听我的 P21. 020函数:内嵌函数和闭包 P22. 021函数:lambda表达式 P23. 022函数:递归是神马 P24. 023递归:这帮小兔崽子 P25. 024递归:汉诺塔 P26. 025字典:当索引不好用时1 P27. 026字典:当索引不好用时2 P28. 027集合:在我的世界里,你就是唯一 P29. 028文件:因为懂你,所以永恒 P30. 029文件:一个任务 P31. 030文件系统:介绍一个高大上的东西 P32. 031永久存储:腌制一缸美味的泡菜 P33. 032异常处理:你不可能总是对的1 P34. 033异常处理:你不可能总是对的2 P35. 034丰富的else语句及简洁的with语句 P36. 035图形用户界面入门:EasyGui P37. 036类和对象:给大家介绍对象 P38. 037类和对象:面向对象编程 P39. 038类和对象:继承 P40. 039类和对象:拾遗 P41. 040类和对象:一些相关的BIF P42. 041魔法方法:构造和析构 P43. 042魔法方法:算术运算1 P44. 043魔法方法:算术运算2 P45. 044魔法方法:简单定制 P46. 045魔法方法:属性访问 P47. 046魔法方法:描述符(Property的原理) P48. 047魔法方法:定制序列 P49. 048魔法方法:迭代器 P50. 049乱入:生成器 P51. 050模块:模块就是程序 P52. 051模块:__name__=___main___、搜索路径和包 P53. 052模块:像个极客一样去思考 P54. 053论一只爬虫的自我修养1 P55. 054论一只爬虫的自我修养2:实战 P56. 055论一只爬虫的自我修养3:隐藏 P57. 056轮一只爬虫的自我修养4:OOXX P58. 057论一只爬虫的自我修养5:正则表达式 P59. 058论一只爬虫的自我修养6:正则表达式2 P60. 059论一只爬虫的自我修养7:正则表达式3 P61. 060论一只爬虫的自我修养8:正则表达式4 P62. 061论一只爬虫的自我修养9:异常处理 P63. 062论一只爬虫的自我修养10:安装Scrapy P64. 063论一只爬虫的自我修养11:Scrapy框架之初窥门径 P65. 064GUI的终极选择:Tkinter1 P66. 065GUI的终极选择:Tkinter2 P67. 066GUI的终极选择:Tkinter3 P68. 067GUI的终极选择:Tkinter4 P69. 068GUI的终极选择:Tkinter5 P70. 069GUI的终极选择:Tkinter6 P71. 070GUI的终极选择:Tkinter7 P72. 071GUI的终极选择:Tkinter8 P73. 072GUI的终极选择:Tkinter9 P74. 073GUI的终极选择:Tkinter10 P75. 074GUI的终极选择:Tkinter11 P76. 075GUI的终极选择:Tkinter12 P77. 076GUI的终极选择:Tkinter13 P78. 077GUI的终极选择:Tkinter14 P79. 078Pygame:初次见面,请大家多多关照 P80. 079Pygame:解惑 P81. 080Pygame:事件 P82. 081Pygame:提高游戏的颜值1 P83. 082Pygame:提高游戏的颜值2 P84. 083Pygame:提高游戏的颜值3 P85. 084Pygame:基本图形绘制 P86. 085Pygame:动画精灵 P87. 086Pygame:碰撞检测 P88. 087Pygame:播放声音和音效 P89. 088Pygame:摩擦摩擦 P90. 089Pygame:游戏胜利 P91. 090Pygame:飞机大战1 P92. 091Pygame:飞机大战2 P93. 092Pygame:飞机大战3 P94. 093Pygame:飞机大战4 P95. 094Pygame:飞机大战5 P96. 095Pygame:飞机大战6 P97. 096Pygame:飞机大战7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值