安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】
一、pygame简介
Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块可以支持多个操作系统。用它来开发小游戏非常适合
二、pygame的使用
第一步是把pygame导入到Python程序中,
import pygame
然后需要引入pygame中所有常量
from pygame.locals import *
在经过初始化以后,我们就可以正常的使用pygame了
pygame.ini()
通常来说我们需要创建一个窗口,方便我们与程序就行交互,下面创建一个600 x 500的窗口
screen=pygame.display.set_mode((600,500))
1、打印字体
pygame支持使用pygame.font将文打印到窗口,要打印一个文本的话首先需要创建一个文本对象,即:创建字体,None:默认字体,60:字体大小
myfont = pygame.font.Font(None,60)
这个文本是个重量级的进程,比较耗费时间,常用的做法是先在内存中创建文本对象,然后将文本当做一个图像来渲染,即:创建一个可以使用screen.blit()绘制的平面
white= 255,255,255blue= 0,0,200textImage= myfont.render("hello Pygame",True,white)
textImage对象可以使用screen.blit()来绘制,上面的render函数第一个参数是文本,第二个参数是抗锯齿字体,第三个参数是一个颜色值(RGB值)
要绘制文本,通常的过程是清屏,绘制,刷新,即:进行绘制
screen.blit()需要两个参数,绘制的对象及其(左上角顶点)坐标
screen.fill(blue)
screen.blit(textImage,(100,100))
pygame.display.update()
如果此时运行程序的话,会出现一个窗口一闪而过,为了让他长时间显示,需要把他放入一个循环中
importpygamefrom pygame.locals import *
importsys
white= 255,255,255blue= 0,0,200pygame.init()
screen= pygame.display.set_mode((600,400))
myfont= pygame.font.Font(None,60)
textImage= myfont.render("Hello World",True,white)whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill(blue)
screen.blit(textImage,(100,100))
pygame.display.update()
执行结果:
pygame除了能打印字体,仍然可以绘制各种图像
2、绘制一个圆形
使用pygame.draw.cicle()方法,该方法需要传递圆的大小,颜色和参数
color (0,0,0)给定颜色
radius圆半径
position (0,0)给定圆心坐标
width线条宽度
importpygame,sys
pygame.init()
screen= pygame.display.set_mode((600,400))#设置圆形的位置和移动的速度变量
pos_x = 300pos_y= 250vel_x= 2vel_y= 1
whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill((0, 0,200))#移动圆形
pos_x +=vel_x
pos_y+=vel_y#让圆形保持在窗口内
if pos_x > 500 or pos_x <0:
vel_x= -vel_xif pos_y > 400 or pos_y <0:
vel_y= -vel_y
color= 255, 255, 0
position= 300, 250radius= 80 #半径
width =0
pos=pos_x,pos_y#print(pos)
pygame.draw.circle(screen,color,pos,radius,width)
pygame.display.update()
执行结果
3、绘制一个矩形
绘制一个可以移动的矩形,而非简单的显示在屏幕中间
首先需要设置pos_x,pos_y两个变量来记录矩形的位置信息,然后在创建一堆速度变量(vel_x,vel_y),在while循环中不断变化矩形的位置,当矩形移动到屏幕边缘的时候,将速度变量取返,这样就可以产生碰撞的效果
position (pos_x,pos_y,100,100)给定左上角顶点的坐标、长和宽
from pygame.locals import *
importpygameimportsys
pygame.init()
screen= pygame.display.set_mode((600,400))
title= pygame.display.set_caption("Drawing Rectangles")#记录矩形的位置信息,记录移动速度的位置信息
pos_x = 300pos_y= 250vel_x= 2vel_y= 1
whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill((0,0,200))#移动矩形
pos_x +=vel_x
pos_y+=vel_y#使矩形保持在窗口内
if pos_x > 500 or pos_x <0:
vel_x= -vel_xif pos_y >400 or pos_y <0:
vel_y= -vel_y#绘制矩形
color = 255,255,0
width=0
pos= pos_x,pos_y,100,100pygame.draw.rect(screen,color,pos,width)
pygame.display.update()
执行结果:
4、绘制线条
使用pygame.draw.line()方法,该方法需要传递起点和终点,还有线条的颜色和宽度
(0,0)(100,100)负责给定线段的两个端点
importpygameimportsys
pygame.init()
screen= pygame.display.set_mode((600,400))whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill((0,0,255))
color= 255,255,0
width= 5pygame.draw.line(screen,color,(100,100),(500,300),width)
pygame.display.update()
执行结果:
5、绘制弧形
弧形是圆形的一部分,可以使用pygame.draw.arc方法绘制它,由于这个形状相对比较复杂,需要用到的知识比前面的知识要多
首先,需要一个矩形来表示弧形的边界(需提供矩形左上角的位置,宽度和高度)弧形就绘制在这个矩形当中
然后需要提供弧形的起始角度和结束角度,平常我们在生活中都是用度为单位衡量一个角度,但在几何三角形中,通常使用的单位是弧度
将角度转换成弧度的函数是math.redians()它包含在math库中,因此使用之前一定要引入math库
#x,y表示弧形所在的圆的圆心坐标,radius表示半径
start_angle起始角度 指向正右侧的半径开始逆时针旋转就是0到360
end_angle结束角度
importmathimportpygamefrom pygame.locals import *
importsys
pygame.init()
screen= pygame.display.set_mode((600,500))
title= pygame.display.set_caption("Drawing Arcs")whileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()
screen.fill((0,0,200))#绘制弧形
color = 255,0,255position= 200,150,200,200start_angle=math.radians(0)
stop_angle= math.radians(180)print(start_angle,stop_angle)
width=8pygame.draw.arc(screen,color,position,start_angle,stop_angle,width)
pygame.display.update()
执行结果:
二、实践:绘制大饼游戏(当按下1,2,3,4相应的按钮时,就会在程序中绘制相应的饼块,当整个饼块绘制完成以后,颜色变成亮绿色)
importpygamefrom pygame.locals import *
importmathimportsys
pygame.init()
screen= pygame.display.set_mode((600,600))
title= pygame.display.set_caption("The Pie Game")
myfont= pygame.font.Font(None,60)
color= 200,80,60width= 4x= 300y= 250radius= 200position= x-radius,y-radius,radius*2,radius*2
#设置按键1,2,3,4变量
piece1 =False
piece2=False
piece3=False
piece4=FalsewhileTrue:for event inpygame.event.get():if event.type ==pygame.QUIT:
sys.exit()elif event.type ==KEYUP:if event.key ==pygame.K_ESCAPE:
sys.exit()elif event.key ==pygame.K_1:
piece1=Trueelif event.key ==pygame.K_2:
piece2=Trueelif event.key ==pygame.K_3:
piece3=Trueelif event.key ==pygame.K_4:
piece4=True#清屏
screen.fill((0,0,200))#绘制4个数字
textImage1 = myfont.render("1",True,color)
text1=screen.blit(textImage1,(x+radius/2-20,y-radius/2))#print("text1==",text1)
textImage2 = myfont.render("2",True,color)
text2=screen.blit(textImage2,(x-radius/2,y-radius/2))#print("text2==", text2)
textImage3 = myfont.render("3",True,color)
text3=screen.blit(textImage3,(x-radius/2,y+radius/2-20))#print("text3==", text3)
textImage4 = myfont.render("4",True,color)
text4=screen.blit(textImage4,(x+radius/2-20,y+radius/2-20))#print("text4==", text4)
#判断是否绘制饼
ifpiece1:
start_angle=math.radians(0)
end_angle= math.radians(90)
arc1=pygame.draw.arc(screen,color,position,start_angle,end_angle,width)print("arc1==",arc1)
line1=pygame.draw.line(screen,color,(x,y),(x,y-radius),width)print("line1==",line1)
line2=pygame.draw.line(screen,color,(x,y),(x+radius,y),width)print("line2==",line2)ifpiece2:
start_angle= math.radians(90)
end_angle= math.radians(180)
pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
pygame.draw.line(screen,color,(x,y),(x,y-radius),width)
pygame.draw.line(screen,color,(x,y),(x-radius,y),width)ifpiece3:
start_angle= math.radians(180)
end_angle= math.radians(270)
pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
pygame.draw.line(screen,color,(x,y),(x-radius,y),width)
pygame.draw.line(screen,color,(x,y),(x,y+radius),width)ifpiece4:
start_angle= math.radians(270)
end_angle= math.radians(360)
pygame.draw.arc(screen,color,position,start_angle,end_angle,width)
pygame.draw.line(screen,color,(x,y),(x,y+radius),width)
pygame.draw.line(screen,color,(x,y),(x,y+radius),width)#是否4个饼都绘制完成
if piece1 and piece2 and piece3 andpiece4:
color= 0,255,0
pygame.display.update()
执行结果
三、绘制椭圆
采用pygame.draw.ellipse()函数
安卓系统python编程pygame_【Python游戏编程01--初步认识pygame】相关推荐
- python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...
游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...
- Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk
Python版经典小游戏愤怒的小鸟源代码,基于pygame+pymunk 程序依赖:pygame2.0.1, pymunk5.5.0 直接运行main.py 完整代码下载地址:Python版经典小游戏 ...
- python编程入门 pdf-PYTHON游戏编程入门 PDF 下载
相关截图: 图书简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需 ...
- python游戏编程书_Python游戏编程快速上手 第4版 (斯维加特著) 中文pdf扫描版[41MB]...
Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言. Python游戏编程快速上手 (第4版)通过编写一个个小巧.有趣的游戏来教授Python编程,并且采用 ...
- python编程入门pdf-Python游戏编程入门 中文pdf扫描版[41MB]
Python是一种解释型.面向对象.动态数据类型的程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需的[]为重要的该你那.本书不 ...
- python编程入门pdf-PYTHON游戏编程入门 PDF 下载
相关截图: 图书简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需 ...
- python五子棋源代码_python游戏编程系列-五子棋
继续介绍python游戏编程,仍然是基于pgzero.关于该软件包的基础使用技巧可参考本人专栏文章:老娄:python游戏编程之pgzero使用介绍zhuanlan.zhihu.com 思考绘制棋盘 ...
- python游戏编程入门p_Python游戏编程入门 PDF高清完整版
Python游戏编程入门 PDF高清完整版 作者: 哈伯 (Jonathan S.Harbour) 译者: 李强 出版年: 2015-1-1 页数: 292 装帧: 平装 ISBN: 97871153 ...
- Python微信打飞机游戏编程学习笔记01
刚学习Python,看别人写的小游戏,照搬照学照写,纯手工手打,一步步,加深印象,加深学习 运行环境是: Python 3.7.1 pygame 1.9.4 微信很火的打飞机游戏拿了学习下 第一步 ...
- Python微信打飞机游戏编程学习笔记02
继上一段的代码.继续完善中 此段代码主要 1.增加了主飞机的载入,并且是动态效果的主飞机 2.增加了主飞机的移动控制 终于有了游戏互动的感觉...继续加油 import pygame #导入pygam ...
最新文章
- (Win7)D盘Program Files文件夹不见了
- 合工大建筑和计算机专业哪个好,合肥工业大学最好的专业是什么(10大热门专业排名)...
- rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
- c++ 类 A类调用B类
- 云上技术 | 混合云多活容灾方案
- [vue] 说说组件的命名规范
- 玩转 VS Code 专栏
- 优先级队列用的的数据结构
- Harmony OS — ToastDialog提示对话框
- matlab如何分解矩阵,Matlab中矩阵的分解
- Python——click模块
- 1156:求π的值(函数题)
- 力扣刷题 DAY_78 贪心
- 广东9月计算机二级考试时间,2021年9月广东计算机等级考试时间:9月25日-27日
- teamviewer付费版,授权轻松访问后还是每次电脑重启后还需要输入密码问题。
- mono.dll caused an Access Violation (0xc0000005) in module mono.dll at 0033:e6b552d6.
- md开源云笔记php,推荐一款开源的云笔记 – Leanote(蚂蚁笔记)
- 软件构件 API 在不同版本间的兼容性——读FSE 2012 best paper有感
- 【车载】ABS/BAS/BA防抱死制动系统
- windows安装.Net Framework3.5无法安装问题