Python+Pygame实战之疯狂吃水果游戏的实现

目录

  • 导语
  • 一、准备中
    • 1)游戏玩法
    • 2)环境安装
    • 3)素材准备
  • 二、代码展示
    • 三、效果展示

      导语 嘿嘿!木木子今日闪现——已经给大家写了很多内容啦~
      涉及的人工智能、初学者、爬虫、数据分析(这方面的一般不过审核)游戏........
      Python+Pygame实战之疯狂吃水果游戏的实现
      文章图片

      PS:
      吃豆人我写过了哈
      Python+Pygame实战之吃豆豆游戏的实现
      切水果我写过了哈
      Python Pygame实战之水果忍者游戏的实现
      今天二者集合,做出一款新游戏,哈哈哈,名字叫做《疯狂吃水果》小游戏,其实听着挺的,但是做出来的效果其实没有想象中那么高大尚呐!(给你们打个预防针)
      本文是基于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 countglobal numglobal scoreif score % 10 ==1:if num >= 8:num -= 8count += 1if 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_stateif 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_STARTgame_start() def bean_move(event):if game_state == Param.GAME_RUNNING:now_x = bean.xnow_y = bean.ybean.x = event.x - bean.w/2bean.y = event.y - bean.h/2window_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 outnumif bonus.out_of_bounds():outnum += 1window_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 scoreglobal lifeglobal beanglobal 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 = 0game_state = Param.GAME_STOP# 画游戏结束的状态game_over()else:score -= 5for bigbomb in bigbombs:if bigbomb.bomb(bean):window_canvas.delete(bigbomb.tag)bigbombs.remove(bigbomb)# 如果分数或生命小于0 游戏结束if life - 1 <= 0:life = 0game_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_stategame_state = Param.GAME_STOPfor 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 scoreglobal lifeglobal numglobal outnumnum = 30score = 0life = 2outnum = 0# 画游戏背景window_canvas.create_image(0, 0, anchor=tkinter.NW, image=background_image, tag="background")# 创建豆豆对象global beanbean = 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("",bean_move)window_canvas.bind("",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实战之疯狂吃水果游戏的实现】以上就是Python+Pygame实战之疯狂吃水果游戏的实现的详细内容,更多关于Python Pygame疯狂吃水果的资料请关注脚本之家其它相关文章!

        推荐阅读