今天给大家带来Python小游戏,找回童年的同时学习编程!

                                  游戏名称:  【 接金 币】

普通难度:❤

玩法介绍:吃金币,控制左右键,有手就行。

源码分享

import os import cfg import sys import pygame import random from modules import *

'''游戏初始化''' def initGame():     # 初始化pygame, 设置展示窗口     pygame.init()     screen = pygame.display.set_mode(cfg.SCREENSIZE)     pygame.display.set_caption('catch coins —— ')     # 加载必要的游戏素材     game_images = {}     for key, value in cfg.IMAGE_PATHS.items():         if isinstance(value, list):             images = []             for item in value: images.append(pygame.image.load(item))             game_images[key] = images         else:             game_images[key] = pygame.image.load(value)     game_sounds = {}     for key, value in cfg.AUDIO_PATHS.items():         if key == 'bgm': continue         game_sounds[key] = pygame.mixer.Sound(value)     # 返回初始化数据     return screen, game_images, game_sounds

'''主函数''' def main():     # 初始化     screen, game_images, game_sounds = initGame()     # 播放背景音乐     pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])     pygame.mixer.music.play(-1, 0.0)     # 字体加载     font = pygame.font.Font(cfg.FONT_PATH, 40)     # 定义hero     hero = Hero(game_images['hero'], position=(375, 520))     # 定义食物组     food_sprites_group = sprite.group -()     generate_food_freq = random.randint(10, 20)     generate_food_count = 0     # 当前分数/历史最高分     score = 0     highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())     # 游戏主循环     clock = pygame.time.Clock()     while True:         # --填充背景         screen.fill(0)         screen.blit(game_images['background'], (0, 0))         # --倒计时信息         countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)         countdown_text = font.render(countdown_text, True, (0, 0, 0))         countdown_rect = countdown_text.get_rect()         countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]         screen.blit(countdown_text, countdown_rect)         # --按键检测         for event in pygame.event.get():             if event.type == pygame.QUIT:                 pygame.quit()                 sys.exit()         key_pressed = pygame.key.get_pressed()         if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:             hero.move(cfg.SCREENSIZE, 'left')         if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:             hero.move(cfg.SCREENSIZE, 'right')         # --随机生成食物         generate_food_count += 1         if generate_food_count > generate_food_freq:             generate_food_freq = random.randint(10, 20)             generate_food_count = 0             food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)             food_sprites_group.add(food)         # --更新食物         for food in food_sprites_group:             if food.update(): food_sprites_group.remove(food)         # --碰撞检测         for food in food_sprites_group:             if pygame.sprite.collide_mask(food, hero):                 game_sounds['get'].play()                 food_sprites_group.remove(food)                 score += food.score                 if score > highest_score: highest_score = score         # --画hero         hero.draw(screen)         # --画食物         food_sprites_group.draw(screen)         # --显示得分         score_text = f'Score: {score}, Highest: {highest_score}'         score_text = font.render(score_text, True, (0, 0, 0))         score_rect = score_text.get_rect()         score_rect.topleft = [5, 5]         screen.blit(score_text, score_rect)         # --判断游戏是否结束         if pygame.time.get_ticks() >= 90000:             break         # --更新屏幕         pygame.display.flip()         clock.tick(cfg.FPS)     # 游

今天给大家带来Python小游戏,找回童年的同时学习编程!

                                                                    接金币 普通难度:❤

玩法介绍:吃金币,控制左右键,有手就行。

源码分享

import os import cfg import sys import pygame import random from modules import *

'''游戏初始化''' def initGame():     # 初始化pygame, 设置展示窗口     pygame.init()     screen = pygame.display.set_mode(cfg.SCREENSIZE)     pygame.display.set_caption('catch coins —— ')     # 加载必要的游戏素材     game_images = {}     for key, value in cfg.IMAGE_PATHS.items():         if isinstance(value, list):             images = []             for item in value: images.append(pygame.image.load(item))             game_images[key] = images         else:             game_images[key] = pygame.image.load(value)     game_sounds = {}     for key, value in cfg.AUDIO_PATHS.items():         if key == 'bgm': continue         game_sounds[key] = pygame.mixer.Sound(value)     # 返回初始化数据     return screen, game_images, game_sounds

'''主函数''' def main():     # 初始化     screen, game_images, game_sounds = initGame()     # 播放背景音乐     pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])     pygame.mixer.music.play(-1, 0.0)     # 字体加载     font = pygame.font.Font(cfg.FONT_PATH, 40)     # 定义hero     hero = Hero(game_images['hero'], position=(375, 520))     # 定义食物组     food_sprites_group = sprite.group -()     generate_food_freq = random.randint(10, 20)     generate_food_count = 0     # 当前分数/历史最高分     score = 0     highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())     # 游戏主循环     clock = pygame.time.Clock()     while True:         # --填充背景         screen.fill(0)         screen.blit(game_images['background'], (0, 0))         # --倒计时信息         countdown_text = 'Count down: ' + str((90000 - pygame.time.get_ticks()) // 60000) + ":" + str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)         countdown_text = font.render(countdown_text, True, (0, 0, 0))         countdown_rect = countdown_text.get_rect()         countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]         screen.blit(countdown_text, countdown_rect)         # --按键检测         for event in pygame.event.get():             if event.type == pygame.QUIT:                 pygame.quit()                 sys.exit()         key_pressed = pygame.key.get_pressed()         if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:             hero.move(cfg.SCREENSIZE, 'left')         if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:             hero.move(cfg.SCREENSIZE, 'right')         # --随机生成食物         generate_food_count += 1         if generate_food_count > generate_food_freq:             generate_food_freq = random.randint(10, 20)             generate_food_count = 0             food = Food(game_images, random.choice(['gold',] * 10 + ['apple']), cfg.SCREENSIZE)             food_sprites_group.add(food)         # --更新食物         for food in food_sprites_group:             if food.update(): food_sprites_group.remove(food)         # --碰撞检测         for food in food_sprites_group:             if pygame.sprite.collide_mask(food, hero):                 game_sounds['get'].play()                 food_sprites_group.remove(food)                 score += food.score                 if score > highest_score: highest_score = score         # --画hero         hero.draw(screen)         # --画食物         food_sprites_group.draw(screen)         # --显示得分         score_text = f'Score: {score}, Highest: {highest_score}'         score_text = font.render(score_text, True, (0, 0, 0))         score_rect = score_text.get_rect()         score_rect.topleft = [5, 5]         screen.blit(score_text, score_rect)         # --判断游戏是否结束         if pygame.time.get_ticks() >= 90000:             break         # --更新屏幕         pygame.display.flip()         clock.tick(cfg.FPS)     # 游戏结束, 记录最高分并显示游戏结束画面     fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')     fp.write(str(highest_score))     fp.close()     return showEndGameInterface(screen, cfg, score, highest_score)

'''run''' if __name__ == '__main__':     while main():         pass ———————————————— 版权声明:本文为CSDN博主「派派百晓生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Libra1313/article/details/123382485

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: