吃水果游戏玩法,python切水果游戏
相信大家对吃豆人和切水果这两个游戏都很熟悉。本文将使用Python中的Pygame模块编写一个结合了吃豆人和切水果的新游戏:疯狂吃水果。有兴趣的可以去了解一下。
00-1010简介1。准备1。游戏玩法2。环境安装3。材料准备2。代码显示3。效果显示
目录
嘿嘿!子木今天闪了——,给大家写了很多内容~
涉及人工智能、新手、爬虫、数据分析的游戏(这个一般不审核).
PS:
吃豆人,是我写的,嗯?
Python Pygame的吃豌豆游戏在实战中的实现
我写了切水果,嗯
PythonPygame水果忍者游戏的实战实现
今天两人聚在一起做了一个新游戏,哈哈哈。名字叫《疯狂吃水果》小游戏。其实听起来挺好的,但是做出来的效果其实没有想象中那么高大上!(给你打预防针)
本文基于Pygame写的一个游戏。
导语
一、准备中
随机掉落:西瓜奖励点,葡萄奖励点,炸弹命中点最初是两个。移动鼠标右键。加多少分或减多少分?就等你自己玩了。都玩出来就不好玩了!每次游戏代码都是给你存的,嘻嘻,自己感受~
1)游戏玩法
边肖的环境:Python3,Pycharm社区版,tkinter,Pygame模块,部分自带模块未显示。
设置:pip install-I https://pypi.douban.com/simple/模块名称
2)环境安装
准备背景音乐就更刺激了!还记得seven这首歌,挺好听的。
准备好的材料,图片,背景的落物等。
3)素材准备
代码太多了!仅显示部分
主程序
导入tkinter
随机导入
导入时间
导入参数
导入图像
进口奖金
进口扣除
导入Bean
进口炸弹
导入pygame
#定义物质清单(包括额外的西瓜和消除葡萄和炸弹)
bonusth=[]
演绎th=[]
大炸弹=[]
#定义bean变量并保存bean对象。
bean=
#定义当前用户的初始分数
分数=0
生命=2
#定义游戏状态
游戏状态=参数。游戏_开始
#创建表单
game_window=tkinter。Tk()
#窗口文本设置
game_window.title(我爱水果)
#窗口位置处理
screen width=game _ window . winfo _ screen width()
screen height=game _ window . winfo _ screen height()
size=%dx%d %d %d %(参数。游戏宽度,参数。游戏高度,(屏幕宽度-参数。游戏_宽度)/2,50)
game_window.geometry(大小)
#加载游戏中使用的所有图片
background_image,bean_image,Bonus_image,Bomb_image,Deduction _ image=image . load _ image(tkinter)
开始,停止=image . load _ state _ image(tkinter)
#获取画布
window_canvas=tkinter。画布(游戏窗口)
#帆布包装方法
窗口_
canvas.pack(expand=tkinter.YES, fill=tkinter.BOTH)
# 时间标志
count = 0
num = 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)游戏界面
2)随机截图
3)消耗结束
以上就是Python+Pygame实战之疯狂吃水果游戏的实现的详细内容,更多关于Python Pygame疯狂吃水果的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。