基本信息
源码名称:python抓娃娃小游戏源码(pygame)
源码大小:60.21M
文件格式:.rar
开发语言:Python
更新时间:2020-02-26
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
from PIL import Image import math,pygame,sys,mod from mod import Hook from mod import Mine,Time_countdown from mod import screen clock = pygame.time.Clock() #窗口设置 pygame.init() pygame.display.set_caption("黄金矿工") screen_size=(800,600) screen=pygame.display.set_mode(screen_size) backcolour=(255,255,255) screen.fill(backcolour) FPS=60 fclock=pygame.time.Clock() #图标初始化 hook=Hook() man=mod.Matchman(hook.rect.top-80,hook.rect.left hook.rect.width/2-50) news_group=pygame.sprite.Group() for i in range(3): news_group.add(mod.Button(i)) screens=0 goals=[100,150,300] time_limited=[20,30,20] #积分 scores=mod.Scores(0) #clock=pygame.time.Clock() pygame.mixer.init() bgm=pygame.mixer.Sound("bgm.wav") bgm.play() while 1: screen.fill(backcolour) if screens==0: #开始界面 mod.show_back(0) for spr in news_group: spr.show() for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.QUIT if event.type == pygame.MOUSEMOTION: for spr in news_group: if spr.rect.collidepoint(event.pos): spr.check = 0 else: spr.check = 1 if event.type == pygame.MOUSEBUTTONDOWN: for spr in news_group: if spr.rect.collidepoint(event.pos): if spr.index==0: #点击开始按钮 level = 0 first_draw = 1 timee = Time_countdown(time_limited[level]) event_count_time = pygame.USEREVENT 1 matchmen_change = pygame.USEREVENT 2 pygame.time.set_timer(event_count_time, 1000) pygame.time.set_timer(matchmen_change, 200) rotate = 1 run = 0 wait = 0 miner_back = 0 special_change_speed = 0 change_man = True hook.reset() screens=1 finish=0 scores.score=0 elif spr.index==1: screens=2 elif spr.index==2: sys.exit() pygame.QUIT elif screens==1: #游戏主界面 mod.show_back(1) if first_draw: timee.reset(time_limited[level]) first_draw=0 miner_group = mod.set(level) for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() pygame.QUIT if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: run = 1 rotate = 0 if event.type == event_count_time: timee.miner() if event.type == matchmen_change: if run: man.change() #碰撞后物体与钩子衔接 if pygame.sprite.spritecollide(hook, miner_group, False, pygame.sprite.collide_mask): miner = pygame.sprite.spritecollide(hook, miner_group, False, pygame.sprite.collide_mask)[0] if miner.first: miner.first = False ayis = (hook.rect.top hook.rect.height / 2) (miner.rect.height/2)* math.sin(math.radians(hook.angle)) axis = (hook.rect.left hook.rect.width / 2) - (miner.rect.height/2)* math.cos(math.radians(hook.angle)) miner.rect.top = ayis - miner.rect.height / 2 miner.rect.left = axis - miner.rect.width / 2 hook.direction = [-hook.direction[0], -hook.direction[1]] miner.direction = hook.direction if miner.speed >= 1: FPS *= miner.speed else: special_change_speed = 1 hook.speed = miner.speed miner_back = 1 if rotate: if hook.angle == 170: hook.turn_direct = -1 elif hook.angle == 10: hook.turn_direct = 1 hook.rotate(hook.turn_direct) if run: if hook.rect.left <= 0 or hook.rect.left hook.rect.width >= screen_size[ 0] or hook.rect.top hook.rect.height >= screen_size[1]: hook.direction = [-hook.direction[0], -hook.direction[1]] elif hook.rect.top < hook.ini_top: run = 0 rotate = 1 hook.reset() if miner_back: miner_back = 0 scores.score = int(miner.value) miner_group.remove(miner) FPS = 60 special_change_speed = 0 continue elif miner_back and special_change_speed: if (-hook.rect.left hook.ini_left) != 0: r = math.atan((hook.rect.top - hook.ini_top) / (-hook.rect.left hook.ini_left)) hook.direction = [10 * math.cos(r), -10 * math.sin(r)] if (r < 0): hook.direction = [-hook.direction[0], -hook.direction[1]] hook.move() pygame.draw.line(screen, (0, 0, 0), (hook.rect.left hook.rect.width / 2, hook.rect.top hook.rect.height / 2), (hook.ini_left hook.rect.width / 2,hook.ini_top hook.rect.height / 2), 4) if miner_back: miner.direction = hook.direction miner.move(hook.speed) miner.rect = screen.blit(miner.img, miner.rect) for i in miner_group: if i.index!=4: break else: finish=1 if len(miner_group) == 0 or timee.now==0 or finish: if scores.score >= goals[level] and level<=2: level = 1 screens = 4 if level==3: continue else: screens = 3 timee.reset(time_limited[0]) finish=0 for spr in miner_group: spr.rect = screen.blit(spr.img, spr.rect) mod.show_txt(str(goals[level]),screen_size[0]/19*14,screen_size[1]/15) timee.show() #man.show() scores.show() hook.rect = screen.blit(hook.load, hook.rect) man.show() elif screens==2: #规则界面 mod.show_back(2) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: screens = 0 if event.type == pygame.QUIT: sys.exit() pygame.QUIT elif screens==3: #失败界面 mod.show_back(3) for event in pygame.event.get(): if event.type == (pygame.MOUSEBUTTONDOWN or pygame.KEYDOWN): screens = 0 if event.type == pygame.QUIT: sys.exit() pygame.QUIT if screens==4: #成功界面 mod.show_back(4) for event in pygame.event.get(): if event.type == (pygame.MOUSEBUTTONDOWN or pygame.KEYDOWN): if level>=3: screens=0 else: screens = 1 first_draw = 1 hook.reset() scores.score=0 if event.type == pygame.QUIT: sys.exit() pygame.QUIT pygame.display.update() fclock.tick(FPS) bgm.stop()