最近在阅读童晶写的《Python游戏趣味编程》,边学边记录吧,蛮有意思。
一、学习要点
1.安装游戏开发库pgzero
pip install pgzero
2.导入游戏开发库及基础绘图操作
import pgzrun #导入游戏开发库
def draw(): #定义绘图函数
screen.fill('white')#屏幕填充白色背景
screen.draw.filled_circle((300,250),50,'black')#屏幕绘制圆心坐标为(300,250),半径为50的圆,填充黑色
screen.draw.circle((340, 250), 90, 'black')#屏幕绘制圆心坐标为(340,250),半径为90的圆,线条颜色为黑色
pgzrun.go()#运行程序
默认屏幕横坐标为0~800,纵坐标为0~600,左上角坐标为(0,0)。
颜色填充同样可以用三原色,即(r,g,b),如:
screen.fill((0,0,0))#黑色背景
3.在函数内修改函数全局变量时,需用global声明。
a=2
b=1
def new():
global a,b#声明修改的是全局变量a和b
a = 3
b = 7
4.range()是范围的意思,它其中可以有1~3个参数。
for i in range(10):#从0到9遍历
print(i,end=' ')
print()
for j in range(5,10):#从5到9遍历
print(j,end=' ')
print()
for k in range(0,10,2):#从0到9,步长为2进行遍历
print(k,end=' ')
print()
for l in range(10,-7,-3):#从9到-6,步长为-3进行遍历
print(l,end=' ')
运行效果如下:
0 1 2 3 4 5 6 7 8 9
5 6 7 8 9
0 2 4 6 8
10 7 4 1 -2 -5
二、练习展示
1. 练习2-3
利用绘制空心圆、填充圆的函数以及坐标的定义,尝试编写代码,绘制出简易人脸效果。
import pgzrun
def draw():
screen.fill('white')#白色背景
screen.draw.filled_circle((300,250),50,'black')#左眼珠
screen.draw.filled_circle((500, 250), 50, 'black')#右眼珠
screen.draw.circle((340, 250), 90, 'black')#左眼眶
screen.draw.circle((540, 250), 90, 'black')#右眼眶
screen.draw.circle((440, 350), 20, 'black')#小鼻子
screen.draw.circle((440, 470), 70, 'black')#嘴巴
screen.draw.circle((440, 350), 240, 'black')#脸
pgzrun.go()
2. 练习3-8
尝试利用for语句,画出一圈黑、一圈白,共10个圆圈的效果。
import pgzrun
color = 0
def draw():
global color
screen.fill('white')
for i in range(101,1,-10): #绘图重叠的部分,新图会覆盖旧图,所以越画越小才有环的效果
if color==0: #color为0填充黑色圆
screen.draw.filled_circle((400, 300), i, 'black')
color = 1
else: #color不为0填充白色圆
screen.draw.filled_circle((400, 300), i, 'white')
color = 0
pgzrun.go()
3. 练习3-11
import pgzrun # 导入游戏库
import random # 导入随机库
WIDTH = 1200 # 设置窗口的宽度
HEIGHT = 800 # 设置窗口的高度
R = 100 # 大圆圈的半径
def draw(): # 绘制模块,每帧重复执行
screen.fill('white') # 白色背景
for x in range(0, WIDTH+2*R, 2*R): # x坐标平铺遍历
for y in range(0, HEIGHT+2*R, 2*R): # y坐标平铺遍历
for r in range(1, R, 10): # 同心圆半径从小到大遍历
# 绘制一个填充圆,坐标为(x,y),半径为R-r,颜色随机
screen.draw.filled_circle((x, y), R-r, \
(random.randint(0, 255), random.randint(0, 255),\
random.randint(0, 255)))
def on_mouse_down(): # 当按下鼠标键时
draw() # 调用绘制函数
pgzrun.go() # 开始执行游戏
4. 练习3-12
import pgzrun # 导入游戏库
import random # 导入随机库
WIDTH = 1200 # 设置窗口的宽度
HEIGHT = 800 # 设置窗口的高度
R = 50 # 大圆圈的半径
def draw(): # 绘制模块,每帧重复执行
screen.fill('white') # 白色背景
for x in range(0, WIDTH+2*R, R): # x坐标平铺遍历
for y in range(0, HEIGHT+2*R, R): # y坐标平铺遍历
# 绘制一个圆,坐标为(x,y),半径为R,颜色随机
screen.draw.circle((x, y), R, \
(random.randint(0, 255), random.randint(0, 255), \
random.randint(0, 255)))
def on_mouse_down(): # 当按下鼠标键时
draw() # 调用绘制函数
pgzrun.go() # 开始执行游戏