赞
踩
任务介绍
本任务是开发一个猴子接香蕉的小游戏,通过键盘控制猴子运动,接住随机掉落的香蕉。读者需要自行准备背景图片,猴子图片,香蕉图片三张,当然,如果不喜欢猴子或香蕉也可以选择其它物品的图片作为素材。
两个类都需要有图片路径,运动速度,初始位置等属性。还需要有让他们运动的方法。其中,香蕉只需要编写从上至下运动,猴子类需要让猴子可以在上下左右不同方向运动。
主函数里面需要用键盘来控制猴子运动,随机生成香蕉从上到下运动,并且检测猴子是否碰到香蕉
import pygame import sys def main(): pygame.init()#初始化pygame size = width, height = 450, 560#界面尺寸 screen = pygame.display.set_mode(size)#设置界面尺寸 bg = pygame.image.load('background.jpg')#加载背景图片 pygame.display.set_caption("游戏")#设置标题 while True: #检测事件发生 for event in pygame.event.get(): if event.type == pygame.QUIT:#发生的事件类型为关闭时 sys.exit() #退出 screen.blit(bg, bg.get_rect()) #显示图片 pygame.display.update() #更新 pygame.time.Clock().tick(60) #设置游戏频率为60 if __name__ == '__main__': main()
class Monkey(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) position = 400, 510 self.speed = [0, 0] self.img = pygame.image.load('monkey.png') self.rect = self.img.get_rect() self.rect.center = position self.image = self.img def move_left(self): self.speed = [-5, 0] if self.rect.left < 0: self.rect.left = 0 else: self.rect = self.rect.move(self.speed) def move_right(self): self.speed = [5, 0] if self.rect.right > 450: self.rect.right = 450 else: self.rect = self.rect.move(self.speed) def move_up(self): self.speed = [0, -5] if self.rect.top < 0: self.rect.top = 0 else: self.rect = self.rect.move(self.speed) def move_down(self): self.speed = [0, 5] if self.rect.bottom > 560: self.rect.bottom = 560 else: self.rect = self.rect.move(self.speed)
import pygame import sys from pygame.locals import * def main(): pygame.init()#初始化pygame size = width, height = 450, 560#界面尺寸 screen = pygame.display.set_mode(size)#设置界面尺寸 bg = pygame.image.load('background.jpg')#加载背景图片 pygame.display.set_caption("游戏")#设置标题 mk = Monkey() #实例化猴子类 while True: #检测事件发生 for event in pygame.event.get(): if event.type == pygame.QUIT:#发生的事件类型为关闭时 sys.exit() #退出 #实例化按键类型 key = pygame.key.get_pressed() # 根据 按键类型判断运动方向 if key[K_LEFT]: mk.move_left() if key[K_RIGHT]: mk.move_right() if key[K_UP]: mk.move_up() if key[K_DOWN]: mk.move_down() screen.blit(bg, bg.get_rect()) #显示图片 screen.blit(mk.image, mk.rect)#显示猴子,必须放在背景图片之后 pygame.display.update() #更新 pygame.time.Clock().tick(60) #设置游戏频率为60 if __name__ == '__main__': main()
class Banana(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) x = randint(20, 430) position = [x, 20] speed = [0, 3] self.img = pygame.image.load('banana.png') self.rect = self.img.get_rect() self.rect.center = position self.image = self.img self.speed = speed def move(self): self.rect = self.rect.move(self.speed)
import pygame import sys from pygame.locals import * def main(): pygame.init() size = width, height = 450, 560 screen = pygame.display.set_mode(size) bg = pygame.image.load('background.jpg') pygame.display.set_caption("游戏") group = pygame.sprite.Group() #实例化精灵组 i = 0 #作为条件判断的变量 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() screen.blit(bg, bg.get_rect()) i = i + 1 if i % 30 == 0: #条件成立时 ba = Banana() #实例化类 group.add(ba) #添加到精灵组 for b in group.sprites(): #从精灵组中循环 b.move() screen.blit(b.img, b.rect) pygame.display.update() pygame.time.Clock().tick(60) if __name__ == '__main__': main()
def main(): pygame.init() size = width, height = 450, 560 screen = pygame.display.set_mode(size) bg = pygame.image.load('background.jpg') pygame.display.set_caption("游戏") mk = Monkey() group = pygame.sprite.Group() i = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: sys.exit() key = pygame.key.get_pressed() if key[K_LEFT]: mk.move_left() if key[K_RIGHT]: mk.move_right() if key[K_UP]: mk.move_up() if key[K_DOWN]: mk.move_down() screen.blit(bg, bg.get_rect()) screen.blit(mk.image, mk.rect) i = i + 1 if i % 30 == 0: ba = Banana() group.add(ba) for b in group.sprites(): b.move() screen.blit(b.img, b.rect) if pygame.sprite.collide_mask(mk, b):#碰撞检测 print("撞到") pygame.display.update() pygame.time.Clock().tick(60) if __name__ == '__main__': main()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。