前言
大家好,我是辣条
记得很久之前有发布过这么一篇: 30个Python小游戏,上班摸鱼我能玩一天【内附源码】不能说是爆火,只能说是口口相传了。不过终究还是有不少刚开始接触Python的人还是一脸蒙圈,于是乎我就只能今天再来上一篇练手小游戏了
目录
前言
1.小猫运动
游戏源码
游戏效果
2.弹球
游戏源码
游戏效果
3.画正方形
游戏源码
游戏效果
4.彩点实验
游戏源码
游戏效果
5.彩点实验圆形
游戏源码
游戏效果
6.彩点实验下三角
游戏源码
游戏效果
7.彩点实验抛物线
游戏源码
游戏效果
8.彩点实验椭圆形
游戏源码
游戏效果
9.旋转文字
游戏源码
游戏效果
10.迷宫游戏
游戏源码
游戏效果
1.小猫运动
游戏源码
@Author : 辣条
'''
多行注释
本程序运行后会有一只小猫向前走
安装模块 pip install sprites
'''
从精灵模块导入所有命令
from sprites import *
新建角色,造型序列为images
images = 'res/cat1.png','res/cat2.png'
新建角色
cat = Sprite(shape=images)
播放喵声
cat.play('喵.wav')
当成立的时候(重复执行)
while True:
# 前进10
cat.fd(10)
# 下一个造型
cat.nextcostume()
# 等待0.3秒
cat.wait(0.3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
游戏效果
2.弹球
游戏源码
@Author : 辣条
"""
弹球,本程序主要演示碰到边缘就反弹这个命令
"""
从精灵模块导入所有命令
from sprites import *
1代表弹球
ball = Sprite(1)
while True:
# 前进0.1
ball.fd(0.1)
# 碰到边缘就反弹
ball.bounce_on_edge()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
游戏效果
3.画正方形
游戏源码
@Author : 大海
from sprites import *
新建虫子精灵
bug=Sprite()
绘画延时为10毫秒
bug.screen.delay(10)
画笔尺寸
bug.pensize(4)
画笔颜色
宝蓝
bug.color('dodger blue')
落笔
bug.pendown()
重复4次
for _ in range(4):
# 前进100
bug.fd(100)
# 右转90
bug.rt(90)
抬笔
bug.penup()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
游戏效果
4.彩点实验
游戏源码
@Author : 大海
'''
彩点实验
'''
import time
from sprites import *
d = Sprite(shape='black',visible=False)
d.screen.bgcolor('black')
while True:
d.randompos()
d.randomcolor()
time.sleep(0.1)
d.dot(random.randint(10,100))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
游戏效果
5.彩点实验圆形
游戏源码
from sprites import *
d = Sprite(shape='blank',visible=False)
d.screen.bgcolor('black')
radius = 200
while True:
d.randomcolor()
d.randomheading()
d.fd(random.randint(1,radius))
d.dot(10)
d.home()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
游戏效果
6.彩点实验下三角
游戏源码
'''
6.彩点实验下三角
'''
from sprites import *
d = Sprite(shape='blank',visible=False)
d.screen.bgcolor('black')
while True:
d.randompos()
if d.xcor() > d.ycor():
d.randomcolor()
d.dot(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
游戏效果
7.彩点实验抛物线
游戏源码
'''
7.彩点实验抛物线
'''
from sprites import *
d = Sprite(shape='blank',visible=False)
d.screen.bgcolor('black')
while True:
d.randompos()
if d.ycor() > 0.5 * d.xcor() * d.xcor() /100:
d.randomcolor()
d.dot(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
游戏效果
8.彩点实验椭圆形
游戏源码
'''
8.彩点实验椭圆形
'''
from sprites import *
d = Sprite(shape='blank',visible=False)
d.screen.bgcolor('black')
dot1 = (-100,0)
dot2 = (100,0)
while True:
d.randompos()
d1 = d.distance(dot1)
d2 = d.distance(dot2)
if d1 + d2 < 300:
d.randomcolor()
d.dot(10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
游戏效果
9.旋转文字
游戏源码
from sprites import *
新建屏幕
screen = Screen()
设定背景颜色
screen.bgcolor('dodger blue')
设定标题
screen.title('旋转的文字')
新建不可见的角色
t=Sprite(visible=False)
设定角色为白色
t.color('white')
a是一个全局变量,这里代表角度
a= 0
要旋转的文字
info = '大海老师大帅比'
定义字体样式
ft = ('黑体',32,'normal')
定义rotate函数
def rotate():
# 申明a为全局变量
global a
# 清除以前所写内容
t.clear()
t.write(info,align='center',font=ft,angle=a)
a = a + 10
screen.ontimer(rotate,50)
rotate()
screen.mainloop()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
游戏效果
10.迷宫游戏
游戏源码
"""
大迷宫游戏.py
小老鼠在一个偌大的迷宫中迷失了方向,请按上下左右方向箭头操作它移动。
找到出口,走出迷宫。
本程序需要python精灵模块1.35版本以上支持。
安装最新版本请用cmd打开命令提示符管理员窗口输入以下命令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites --upgrade
本程序主要演示的像素级碰撞检测命令pixelcollide。它返回碰撞点坐标,
主碰方(在这里是老鼠)碰撞点的像素值,被碰方(这时是迷宫),重叠区域矩形。就像下面这样:
((14.0, 3.0), (45, 45, 45), (104, 104, 104), (-17.0, 9.0, 18.0, -9.0, 630.0))
最后重叠区域是一个五元组,这个五元组最后一个值是重叠区域的面积。
问题是,小老鼠最后找到了绿色的出口,可怎么也无法进门!
当你理解了pixelcollide的返回值后,相信你能对此程序进行修改,从而解决小老鼠的问题。
"""
from sprites import * # 从精灵模块导入所有命令
from pygame import mixer # 从pygame模块导入混音器
screen = Screen()
screen.setup(480,360)
screen.title('大迷宫游戏')
mixer.init()
mixer.music.load('胡伟立 - 周旋过场.mp3')
mixer.music.play(-1,0) # 从头开始循环播放
maze = Sprite('1.png') # 新建迷宫
maze.scale(2) # 迷宫长宽扩大为原来2倍
maze.ondrag(None) # 让迷宫不可拖动,(maze.draggable()能让它重新可拖动)
新建有两个造型的老鼠角色
rat = Sprite(['res/rat1.png','res/rat2.png'])
rat.shapesize(0.5,0.6)
leftkey = Key("Left") # 向左方向箭头
rightkey = Key("Right") # 向右方向箭头
upkey = Key("Up") # 向上方向箭头
downkey = Key("Down") # 向下方向箭头
screen.listen() # 监听屏幕按键
r = None
while True:
if leftkey.down(): # 按左方向箭头往左移
rat.nextcostume()
rat.setheading(180)
maze.addx(5)
r = rat.pixelcollide(maze)
if r:maze.addx(-5)
if rightkey.down(): # 按右方向箭头往左移
rat.nextcostume()
rat.setheading(0)
maze.addx(-5)
r = rat.pixelcollide(maze)
if r:maze.addx(5)
if upkey.down(): # 按上方向箭头往左移
rat.nextcostume()
rat.setheading(90)
maze.addy(-5)
r = rat.pixelcollide(maze)
if r:maze.addy(5)
if downkey.down(): # 按下方向箭头往左移
rat.nextcostume()
rat.setheading(-90)
maze.addy(5)
r = rat.pixelcollide(maze) # 对rat和maze进行像素极碰撞检测
if r:maze.addy(-5)
if r: print(r)
screen.update()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
游戏效果
``
源码/资料/实战项目,备注:C站
微信名片