夜雨聆风学习资料网

ARTICLE · 1115829

4 套 Python 游戏源码,边玩边练编程

4 套 Python 游戏源码,边玩边练编程

图1 贪吃蛇

import copy
defsnake_move():
# 获取蛇头
    head = [snake[-1][0],snake[-1][1]]
# 最后一个加方向
    head = [head[0] + aim[0], head[1] + aim[1]]
# 加过后还在蛇里面,不在画布里面
    snake.append(head) # 蛇的头部添加这个新的方块。
    snake.pop(0) # 蛇的尾部,去除一个方块
    turtle.clear()# 清除方块
# 重新画一遍蛇的整个身子
for body in snake:
        square(body[0], body[1], 10, 'black')

turtle.update()# 更新动画
turtle.ontimer(snake_move, 300)
turtle.hideturtle()
turtle.tracer(False)

图2 俄罗斯方块

1import sys
2import random, copy
3import pygame as pg
4from pygame.localsimport *
5
6# 常量声明
7 EMPTY_CELL = 0# 空区标识,表示没有方块
8 FALLING_BLOCK = 1# 下落中的方块标识,也就是活动方块。
9 STATIC_BLOCK = 2# 固实方块标识
10
11# 全局变量声明
12# 变量值以sysInit函数中初始化后的结果为准
13 defaultFont = None# 默认字体
14 screen = None# 屏幕输出对象
15 backSurface = None# 图像输出缓冲画板
16 score = 0# 玩家得分记录
17 clearLineScore = 0# 玩家消除的方块行数
18 level = 1# 关卡等级
19 clock = None# 游戏时钟
20 nowBlock = None# 当前下落中的方块
21 nextBlock = None# 下一个将出现的方块
22 fallSpeed = 10# 当前方块下落速度
23 beginFallSpeed = fallSpeed  # 游戏初始时方块下落速度
24 speedBuff = 0# 下落速度缓冲变量
25 keyBuff = None# 上一次按键记录
26 maxBlockWidth = 10# 舞台堆区X轴最大可容纳基础方块数
27 maxBlockHeight = 18# 舞台堆区Y轴最大可容纳基础方块数
28 blockWidth = 30# 以像素为单位的基础方块宽度
29 blockHeight = 30# 以像素为单位的基础方块高度

图3 消消乐

1 pygame.init()  # 初始化
2 pygame.mixer.init()
3 pygame.display.set_caption('开心消消乐 公众号: Python日志 学习解答加群: 494958217 ')
4 tree = manager.ManagerTree()
5 m = manager.Manager(0, 0)
6 sound_sign = 0
7 world_bgm = pygame.mixer.Sound(manager.SoundPlay.world_bgm)
8 game_bgm = pygame.mixer.Sound(manager.SoundPlay.game_bgm)
9whileTrue:
10if m.level == 0:
11if sound_sign == 0:
12             game_bgm.stop()
13             world_bgm.play(-1)
14             sound_sign = 1
15else:
16if sound_sign == 1:
17             world_bgm.stop()
18             game_bgm.play(-1)
19             sound_sign = 0
20if m.level == 0:
21         tree.draw_tree(m.energy_num, m.money)
22else:
23         m.set_level_mode(m.level)
24         sprite_group = m.draw()
25if m.type == 0:
26             m.eliminate_animal()
27             m.death_map()
28             m.exchange(sprite_group)
29             m.judge_level()
30
31for event in pygame.event.get():
32if event.type == KEYDOWN:
33if event.key == pygame.K_q or event.key == pygame.K_ESCAPE:
34                 exit()
35if event.type == QUIT:
36             sys.exit()
37     m.level, m.energy_num, m.money = tree.mouse_select(event, m.level, m.energy_num, m.money)

图4 超级玛丽

1import numpy as np
2import random, sys
3import pgzrun
4classBrick(Actor):
5defreact(self):
6if np.abs(mario.center[1]+mario.size[1]/2-self.center[1]+self.size[1]/2)<15:  # z gory
7             mario.vy = 0
8             mario.bottom = self.top
9elif np.abs(mario.center[1]-mario.size[1]/2-self.center[1]-self.size[1]/2)<15:  # z dolu
10             mario.vy = 0
11             mario.top = self.bottom
12elif np.abs(mario.center[0]+mario.size[0]/2-self.center[0]+self.size[0]/2)<15:  # z prawej
13             moveall(6)
14elif np.abs(mario.center[0]-mario.size[0]/2-self.center[0]-self.size[0]/2)<15:  # z lewej
15             moveall(-6)
16defmove(self):
17pass
18
19classCoin(Actor):
20defreact(self):
21if mario.colliderect(self):
22#sounds.coin.play()
23             objs.remove(self)
24             mario.points=mario.points+1
25defmove(self):
26pass
27
28classBlock(Actor):
29defreact(self):
30if np.abs(mario.center[1]+mario.size[1]/2-self.center[1]+self.size[1]/2)<15:  # z gory
31             mario.vy = 0
32             mario.bottom = self.top
33elif np.abs(mario.center[1]-mario.size[1]/2-self.center[1]-self.size[1]/2)<15:  # z dolu
34             mario.vy = 0
35             mario.top = self.bottom
36             animate(self, pos=(self.center[0], -10000))

相关学习资料