文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python+Pygame怎么实现疯狂吃水果游戏

2023-07-02 13:51

关注

这篇文章主要介绍“Python+Pygame怎么实现疯狂吃水果游戏”,在日常操作中,相信很多人在Python+Pygame怎么实现疯狂吃水果游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python+Pygame怎么实现疯狂吃水果游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、准备中 

1)游戏玩法

随机掉落:西瓜????加分、葡萄????减分、炸弹????一条生命值初始为二。鼠标右键移动。加减多少分具体就等你们自己玩儿了哈,都剧透了就不好玩了撒!每次的游戏代码都给你们留点儿底,嘻嘻,自己摸索嘛~

2)环境安装

小编使用的环境:Python3、Pycharm社区版、tkinter、Pygame模块,部分自 带模块不展示。

模块安装:pip install -i https://pypi.douban.com/simple/+模块名

3)素材准备

准备了背景音乐更有劲儿啦!记得seven这首歌嘛,还挺好听的。

Python+Pygame怎么实现疯狂吃水果游戏

准备好的素材图片背景掉落的物品等。

Python+Pygame怎么实现疯狂吃水果游戏

二、代码展示

代码超级多的!仅展示部分

主程序

import tkinterimport randomimport timeimport Paramimport Imageimport Bonusimport Deductionimport Beanimport Bombimport pygame# 定义物质列表(包含加分西瓜和消分葡萄和炸弹)bonusth = []deductionth = []bigbombs = []# 定义bean变量,保存豆豆对象bean =  ""# 定义当前用户的初始分数score = 0life = 2# 定义游戏状态game_state = Param.GAME_START # 创建窗体game_window = tkinter.Tk()# 窗口文字设置game_window.title('I LOVE FRUIT')# 窗口位置处理screenwidth = game_window.winfo_screenwidth()screenheight = game_window.winfo_screenheight()size = '%dx%d+%d+%d' % (Param.GAME_WIDTH, Param.GAME_HEIGHT, (screenwidth-Param.GAME_WIDTH)/2, 50)game_window.geometry(size)# 加载游戏用到的所有的图片background_image,bean_image,Bonus_image,Bomb_image,Deduction_image= Image.load_image(tkinter)Start,Stop = Image.load_state_image(tkinter) # 获取画布window_canvas = tkinter.Canvas(game_window)# 画布包装方式window_canvas.pack(expand=tkinter.YES, fill=tkinter.BOTH) # 时间标志count = 0num = 30  def create_fruit():# 生成水果    global count    global num    global score    if score % 10 ==1:        if num >= 8:            num -= 8    count += 1    if count % num == 0:        c = random.randint(1,10)        if c <= 5:            # 加分水果生成            bonus = Bonus.Bonus(Bonus_image)            bonusth.append(bonus)    # 物质添加到列表中            window_canvas.create_image(bonus.x,bonus.y,anchor = tkinter.NW,image=bonus.image,tag=bonus.tag)        elif c<=8:            # 销分水果生成            deduction = Deduction.Deduction(Deduction_image)            deductionth.append(deduction)            window_canvas.create_image(deduction.x,deduction.y,anchor = tkinter.NW,image=deduction.image,tag=deduction.tag)        else:            #炸弹生成            bigbomb = Bomb.BigBomb(Bomb_image)            bigbombs.append(bigbomb)            window_canvas.create_image(bigbomb.x,bigbomb.y,anchor = tkinter.NW,image=bigbomb.image,tag=bigbomb.tag) def step_fruit():    # 遍历所有的物质,调用移动的方法    for bonus in bonusth:        bonus.step(window_canvas)    for deduction in deductionth:        deduction.step(window_canvas)    for bigbomb in bigbombs:        bigbomb.step(window_canvas) def judge_state(event):    global game_state    if game_state == Param.GAME_START:        game_state = Param.GAME_RUNNING        # 画分        window_canvas.create_text(20, 20, text="分数:%d" % (score), anchor=tkinter.NW, fill="white",\        font="time 12 bold",tag="SCORE")        # 画生命        window_canvas.create_text(20, 50, text="生命:%d" % (life), anchor=tkinter.NW, fill="white",\        font="time 12 bold",tag="LIFE")        # 删除启动图片        window_canvas.delete("Start")     elif game_state == Param.GAME_STOP:        window_canvas.delete("bean")        window_canvas.delete("STOP")        game_state = Param.GAME_START        game_start() def bean_move(event):    if game_state == Param.GAME_RUNNING:        now_x = bean.x        now_y = bean.y        bean.x = event.x - bean.w/2        bean.y = event.y - bean.h/2        window_canvas.move("bean", bean.x-now_x, bean.y-now_y) def out_of_bounds():    # 获取所有物质,判断是否越界    for deduction in deductionth:        if deduction.out_of_bounds():            window_canvas.delete(deduction.tag)            deductionth.remove(deduction)    for bonus in bonusth:        global outnum        if bonus.out_of_bounds():            outnum += 1            window_canvas.delete(bonus.tag)            bonusth.remove(bonus)        if outnum >= 5:            game_state = Param.GAME_STOP                # 画游戏结束的状态            game_over()    for bigbomb in bigbombs:        if bigbomb.out_of_bounds():            window_canvas.delete(bigbomb.tag)            bigbombs.remove(bigbomb) def bomb_action():    global score    global life    global bean    global game_state    #加分    for bonus in bonusth:        if bonus.bomb(bean):            window_canvas.delete(bonus.tag)            bonusth.remove(bonus)            score += 3    #减分    for deduction in deductionth:        if deduction.bomb(bean):            window_canvas.delete(deduction.tag)            deductionth.remove(deduction)            if score - 5 < 0:                score = 0                game_state = Param.GAME_STOP                # 画游戏结束的状态                game_over()            else:                score -= 5                    for bigbomb in bigbombs:        if bigbomb.bomb(bean):            window_canvas.delete(bigbomb.tag)            bigbombs.remove(bigbomb)            # 如果分数或生命小于0 游戏结束            if life - 1 <= 0:                life = 0                game_state = Param.GAME_STOP                # 画游戏结束的状态                game_over()            else:                life -= 1             def draw_action():    # 画分    window_canvas.delete("SCORE")    # 画生命    window_canvas.delete("LIFE")    window_canvas.create_text(20,20,text="分数:%d"%(score),anchor=tkinter.NW,fill="white",font="time 12 bold",tag="SCORE")    window_canvas.create_text(20,50,text="生命:%d"%(life),anchor=tkinter.NW,fill="white",font="time 12 bold",tag="LIFE")    def game_over():    global game_state    game_state = Param.GAME_STOP    for deduction in deductionth:        window_canvas.delete(deduction.tag)    for bonus in bonusth:        window_canvas.delete(bonus.tag)    for bigbomb in bigbombs:        window_canvas.delete(bigbomb.tag)    deductionth.clear()    bonusth.clear()    bigbombs.clear()    window_canvas.create_image(0,0,anchor=tkinter.NW,image=Stop,tag="STOP")    if pygame.mixer.music.get_busy() == True:        pygame.mixer.music.stop()#停止播放    def game_start():    global score    global life    global num    global outnum    num = 30    score = 0    life = 2    outnum = 0    # 画游戏背景    window_canvas.create_image(0, 0, anchor=tkinter.NW, image=background_image, tag="background")    # 创建豆豆对象    global bean    bean = Bean.Bean(bean_image)    window_canvas.create_image(bean.x, bean.y, anchor=tkinter.NW, image=bean.image, tag="bean")    window_canvas.create_image(0, 0, anchor=tkinter.NW, image=Start, tag="Start")        pygame.mixer.init()    pygame.mixer.music.load('Seve(钢琴版).mp3') #加载背景音乐    if pygame.mixer.music.get_busy() == False:        pygame.mixer.music.play(300,0)#重复300次,从第一秒开始播放    def game():    if game_state == Param.GAME_START:        game_start()        # 鼠标监听        window_canvas.bind("<Motion>",bean_move)        window_canvas.bind("<Button-1>",judge_state)     while True:        if game_state == Param.GAME_RUNNING:            # 物质入场            create_fruit()            # 物质动起来            step_fruit()            # 删除越界的物质            out_of_bounds()            # 检测碰撞            bomb_action()            if score >= 0:                # 画分和生命                draw_action()                # 更新显示        game_window.update()        time.sleep(0.04) if __name__ == "__main__":    game()    game_window.mainloop()

三、效果展示

1)游戏界面

Python+Pygame怎么实现疯狂吃水果游戏

2)随机截图

Python+Pygame怎么实现疯狂吃水果游戏

3)消耗结束

Python+Pygame怎么实现疯狂吃水果游戏

到此,关于“Python+Pygame怎么实现疯狂吃水果游戏”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯