python案例小游戏

打字小游戏

今天完成了python课程的结课设计。
摘要:
本作品主要实现了打字小游戏的实现。结合以往作业tkinter和小游戏pygame的一个结合,登录系统可以实现登录、登录成功、登录失败、清空等功能。游戏系统可以实现打字、计分、背景音乐等功能。主要目的是为了能够使游戏系统更加切近实际,学习功能。

简要说明一下游戏的运行综述
在这里插入图片描述
这里编写了两个模块:tkinter和pygame模块,两个模块都可以单独运行。
本作品先运行tkinter模块,使系统能够正常登录到登录界面,同时保证在输入错误密码后能够有提示,实现良好的用户交互界面,效果如:图2.1、2.2。

图 2.1 tkinter实现 登录成功
在这里插入图片描述

图 2.2 tkinter实现 登录失败
在这里插入图片描述
然后通过调用pygame模块,使系统可以实现游戏体现,如:图2.2
在这里插入图片描述
由于篇幅展示部分核心代码:
登录:

try:
    with open(filename) as fp:
        n, p = fp.read().strip().split(',')
        varName.set(n)
        varPwd.set(p)
except:
    pass

# 记住我,复选框
rememberMe = tkinter.IntVar(root, value=1)
# 选中时变量值为1,未选中时变量值为0,默认选中
checkRemember = tkinter.Checkbutton(root,
                                    text='记住密码?',
                                    variable=rememberMe,
                                    onvalue=1, offvalue=0)
checkRemember.place(x=30, y=70, width=120, height=20)

# 登录按钮事件处理函数
def login():
    # 获取用户名和密码
    name = entryName.get()
    pwd = entryPwd.get()
    if name=='chenquan' and pwd=='123456':
        tkinter.messagebox.showinfo(title='恭喜小伙子',
                                    message='登录成功!',


                                    )


        if rememberMe.get() == 1:
            # 把登录成功的信息写入临时文件
            with open(filename, 'w') as fp:
                fp.write(','.join((name,pwd)))
        else:
            try:
                os.remove(filename)
            except:
                pass
        root.destroy()#关闭根窗口(这个登录的窗口)

        os.system('python text_a.py')#调用游戏py项目
    else:
        tkinter.messagebox.showerror('警告,你密码错了',
                                     message='用户名或密码错误')
# 创建按钮组件,同时设置按钮事件处理函数
buttonOk = tkinter.Button(root,
                          text='登陆',
                          activeforeground='#ff0000',# 按下按钮时文字颜色
                          command=login,
                          )
buttonOk.place(x=30, y=100, width=50, height=20)

游戏模块:

"""
游戏第一部分:主函数
"""
#背景音乐
url="yy.mp3"
pygame.mixer.init()                  #调用pygame模块中的mixer.init()方法,进行初始化
t=pygame.mixer.music.load(url)      #调用mixer.music.load()方法,加载音频路径文件
pygame.mixer.music.play()            #最后调用mixer.music.play()方法,播放音频文件

def menu():
    # 1.设置窗口标题
    pygame.display.set_caption("打字游戏")
    # 2.死循环
    while True:
        # 3.设置背景颜色填充
        # screen.fill((255, 255, 255))
        # 绘制哪张图,以及起始点位置
        screen.blit(back, (0, 0))

        # 4.调用业务处理函数
        action()
        # 5.调用图形图案绘制函数
        paint()
        # 7.屏幕刷新延迟
        pygame.time.delay(speed)
        # 6.设置窗口刷新屏幕
        pygame.display.update()


"""
第二部分:变量声明初始化区域
"""
# 设置窗体
screen = pygame.display.set_mode((800, 600), 0, 0)
# 存储字母列表
word = []
# 存储字母坐标值列表
xx = []
yy = []
# 存储得分
score = 0
# 存储RGB颜色值
R = 0
G = 0
B = 0
# 存储速度
speed = 20
# 加载图片(选一张好看的图片作为背景)
back = pygame.image.load("2.jpeg")

"""
第五部分:初始化函数
"""


def init():
    for i in range(0, 10):
        # 字母 ===》A :65  a==>97
        word.append(random.randint(65, 90))
        # 坐标值
        xx.append(random.randint(0, 800))
        yy.append(random.randint(0, 600))


"""
第三部分:业务逻辑处理区域
"""


def action():
    global score
    # 4.1 循环迭代事件监听
    for event in pygame.event.get():
        # 4.2 判断是否退出系统
        if event.type == pygame.QUIT:
            sys.exit()
        # 4.4 循环比对
        if event.type == pygame.KEYDOWN:  # 键盘按下
            # 4.5 循环遍历与按键比较
            for i in range(0, 10):
                # 4.6 判断
                if event.key == word[i] + 32:
                    # 4.7 业务处理
                    word[i] = random.randint(65, 90)  # 使得word“消失”
                    xx[i] = random.randint(0, 800)  # xx坐标另产生一个随机数,表现为“消失”
                    # 使得yy坐标“消失”,yy坐标变负号,消失在屏幕看不见的位置
                    yy[i] = -random.randint(0, 600)
                    score += 5
                    # 4.8 防止消失多个
                    break
    # 4.3 字母移动
    for i in range(0, 10):
        yy[i] += 1
        # 循环判断
        if yy[i] > 600:
            yy[i] = 0
    # 4.4 根据分数修改速度
    global speed
    if score > 500:  # 20个字
        speed = 3
    elif score > 250:  # 50个字
        speed = 5
    elif score > 100:  # 100个字
        speed = 10

本次实验要求和实验目录:
在这里插入图片描述

在这里插入图片描述**

代码、文本、字体等已经放入阿里云盘:

**

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别动我键盘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值