基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
源码及注释:
importpygame
fromsysimportexit
fromrandomimportrandint
importtime
importos
#定义窗口分辨率
SCREEN_WIDTH=700
SCREEN_HEIGHT=600
current_path=os.path.abspath(os.path.dirname(__file__))
root_path=current_path[:current_path.find("monkey-picking-peach\\")+len("monkey-picking-peach\\")]\
+"resource\\images\\"
#图片
BACKGROUND_IMAGE_PATH=root_path+"background.jpg"
MONKEY_IMAGE_PATH=root_path+"monkey.png"
APPLE_IMAGE_PATH=root_path+"apple.png"
JUMP_STATUS=False
OVER_FLAG=False
START_TIME=None
offset={pygame.K_LEFT:0,pygame.K_RIGHT:0,pygame.K_UP:0,pygame.K_DOWN:0}
#定义画面帧率
FRAME_RATE=60
#定义动画周期(帧数)
ANIMATE_CYCLE=30
ticks=0
clock=pygame.time.Clock()
#猴子类
classMonkey(pygame.sprite.Sprite):
#苹果的数量
apple_num=0
def__init__(self,mon_surface,monkey_pos):
pygame.sprite.Sprite.__init__(self)
self.image=mon_surface
self.rect=self.image.get_rect()
self.rect.topleft=monkey_pos
self.speed=5
#控制猴子的移动
defmove(self,_offset):
globalJUMP_STATUS
x=self.rect.left+_offset[pygame.K_RIGHT]-_offset[pygame.K_LEFT]
y=self.rect.top+_offset[pygame.K_DOWN]-_offset[pygame.K_UP]
ify<0:
self.rect.top=0
JUMP_STATUS=True
elify>=SCREEN_HEIGHT-self.rect.height:
self.rect.top=SCREEN_HEIGHT-self.rect.height
JUMP_STATUS=False
else:
self.rect.top=y
JUMP_STATUS=True
ifx<0:
self.rect.left=0
elifx>SCREEN_WIDTH-self.rect.width:
self.rect.left=SCREEN_WIDTH-self.rect.width
else:
self.rect.left=x
#接苹果
defpicking_apple(self,app_group):
#判断接到几个苹果
picked_apples=pygame.sprite.spritecollide(self,app_group,True)
#添加分数
self.apple_num+=len(picked_apples)
#接到的苹果消失
forpicked_appleinpicked_apples:
picked_apple.kill()
#苹果类
classApple(pygame.sprite.Sprite):
def__init__(self,app_surface,apple_pos):
pygame.sprite.Sprite.__init__(self)
self.image=app_surface
self.rect=self.image.get_rect()
self.rect.topleft=apple_pos
self.speed=1
defupdate(self):
globalSTART_TIME
ifSTART_TIMEisNone:
START_TIME=time.time()
self.rect.top+=(self.speed*(1+(time.time()-START_TIME)/40))
ifself.rect.top>SCREEN_HEIGHT:
#苹果落地游戏结束
globalOVER_FLAG
OVER_FLAG=True
self.kill()
#初始化游戏
pygame.init()
screen=pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
pygame.display.set_caption("猴子接苹果")
#载入图片
background_surface=pygame.image.load(BACKGROUND_IMAGE_PATH).convert()
monkey_surface=pygame.image.load(MONKEY_IMAGE_PATH).convert_alpha()
apple_surface=pygame.image.load(APPLE_IMAGE_PATH).convert_alpha()
#创建猴子
monkey=Monkey(monkey_surface,(200,500))
#创建苹果组
apple_group=pygame.sprite.Group()
#分数字体
score_font=pygame.font.SysFont("arial",40)
#主循环
whileTrue:
ifOVER_FLAG:
break
#控制游戏最大帧率
clock.tick(FRAME_RATE)
#绘制背景
screen.blit(background_surface,(0,0))
ifticks>=ANIMATE_CYCLE:
ticks=0
#产生苹果
ifticks%30==0:
apple=Apple(apple_surface,
[randint(0,SCREEN_WIDTH-apple_surface.get_width()),-apple_surface.get_height()])
apple_group.add(apple)
#控制苹果
apple_group.update()
#绘制苹果组
apple_group.draw(screen)
#绘制猴子
screen.blit(monkey_surface,monkey.rect)
ticks+=1
#接苹果
monkey.picking_apple(apple_group)
#更新分数
score_surface=score_font.render(str(monkey.apple_num),True,(0,0,255))
screen.blit(score_surface,(620,10))
#更新屏幕
pygame.display.update()
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
pygame.quit()
exit()
#控制方向
ifevent.type==pygame.KEYDOWN:
ifevent.keyinoffset:
ifevent.key==pygame.K_UP:
offset[event.key]=80
else:
offset[event.key]=monkey.speed
elifevent.type==pygame.KEYUP:
ifevent.keyinoffset:
offset[event.key]=0
#移动猴子
ifJUMP_STATUS:
offset[pygame.K_DOWN]=5
offset[pygame.K_UP]=0
monkey.move(offset)
#游戏结束推出界面
score_surface=score_font.render(str(monkey.apple_num),True,(0,0,255))
over_surface=score_font.render(u"GameOver!",True,(0,0,255))
screen.blit(background_surface,(0,0))
screen.blit(score_surface,(620,10))
screen.blit(over_surface,(250,270))
whileTrue:
pygame.display.update()
foreventinpygame.event.get():
ifevent.type==pygame.QUIT:
pygame.quit()
exit()
食用指南:使用的图片
monkey.png:
background.jpg:
apple.png:
这是我的文件目录,学习者也可改为自己的:
更改的代码位置:
root_path=current_path[:current_path.find("monkey-picking-peach\\")+len("monkey-picking-peach\\")]\
+"resource\\images\\"
游戏截图:
到此这篇关于基于Python-Pycharm实现的猴子摘桃小游戏的文章就介绍到这了,更多相关Python猴子摘桃小游戏内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
