• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python项目吃金币源码文章较短,直接上代码

武飞扬头像
S·P·A·C·E
帮助1

📌作者主页传送门:点此传送

🌐为大家推荐一款刷题网站呀👉点击跳转
所有编程语言,都可以从此网站中找到并参考学习哟~

目录

效果展示:

准备工作

库的安装方法

科普小知识

完整代码

最后


效果展示:

学新通

准备工作

首先,确保你有安装cfg的库和pygame的库,没有安装的看下安装方法

库的安装方法

首先,win r,在运行框里输入cmd或者CMD,进入终端,输入以下两行代码

  1.  
    pip install pygame
  2.  
    pip install cfg

注:cfg容易安装错误,具体看报错,如有报错评论区留言,我会一个一个地答复

科普小知识

1.凡是安装Python的第三方库,只需要输入pip install 库的名字(当然有一些特例)

2.凡是程序运行不起来,整体代码大部分报错,一般是没安装库,一个Python文件里面引用的库一般在开头:import 库的名字,检查这里有没有报错或者黄色下划线就好了,如果有,就用方法一安装库,如果没有,可能是自身代码的问题了

完整代码

  1.  
    import os
  2.  
    import cfg
  3.  
    import sys
  4.  
    import pygame
  5.  
    import random
  6.  
    from modules import *
  7.  
     
  8.  
     
  9.  
    '''游戏初始化'''
  10.  
    def initGame():
  11.  
    # 初始化pygame, 设置展示窗口
  12.  
    pygame.init()
  13.  
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
  14.  
    pygame.display.set_caption('catch coins —— 九歌')
  15.  
    # 加载必要的游戏素材
  16.  
    game_images = {}
  17.  
    for key, value in cfg.IMAGE_PATHS.items():
  18.  
    if isinstance(value, list):
  19.  
    images = []
  20.  
    for item in value: images.append(pygame.image.load(item))
  21.  
    game_images[key] = images
  22.  
    else:
  23.  
    game_images[key] = pygame.image.load(value)
  24.  
    game_sounds = {}
  25.  
    for key, value in cfg.AUDIO_PATHS.items():
  26.  
    if key == 'bgm': continue
  27.  
    game_sounds[key] = pygame.mixer.Sound(value)
  28.  
    # 返回初始化数据
  29.  
    return screen, game_images, game_sounds
  30.  
     
  31.  
     
  32.  
    '''主函数'''
  33.  
    def main():
  34.  
    # 初始化
  35.  
    screen, game_images, game_sounds = initGame()
  36.  
    # 播放背景音乐
  37.  
    pygame.mixer.music.load(cfg.AUDIO_PATHS['bgm'])
  38.  
    pygame.mixer.music.play(-1, 0.0)
  39.  
    # 字体加载
  40.  
    font = pygame.font.Font(cfg.FONT_PATH, 40)
  41.  
    # 定义hero
  42.  
    hero = Hero(game_images['hero'], position=(375, 520))
  43.  
    # 定义食物组
  44.  
    food_sprites_group = pygame.sprite.Group()
  45.  
    generate_food_freq = random.randint(10, 20)
  46.  
    generate_food_count = 0
  47.  
    # 当前分数/历史最高分
  48.  
    score = 0
  49.  
    highest_score = 0 if not os.path.exists(cfg.HIGHEST_SCORE_RECORD_FILEPATH) else int(open(cfg.HIGHEST_SCORE_RECORD_FILEPATH).read())
  50.  
    # 游戏主循环
  51.  
    clock = pygame.time.Clock()
  52.  
    while True:
  53.  
    # --填充背景
  54.  
    screen.fill(0)
  55.  
    screen.blit(game_images['background'], (0, 0))
  56.  
    # --倒计时信息
  57.  
    countdown_text = 'Count down: ' str((90000 - pygame.time.get_ticks()) // 60000) ":" str((90000 - pygame.time.get_ticks()) // 1000 % 60).zfill(2)
  58.  
    countdown_text = font.render(countdown_text, True, (0, 0, 0))
  59.  
    countdown_rect = countdown_text.get_rect()
  60.  
    countdown_rect.topright = [cfg.SCREENSIZE[0]-30, 5]
  61.  
    screen.blit(countdown_text, countdown_rect)
  62.  
    # --按键检测
  63.  
    for event in pygame.event.get():
  64.  
    if event.type == pygame.QUIT:
  65.  
    pygame.quit()
  66.  
    sys.exit()
  67.  
    key_pressed = pygame.key.get_pressed()
  68.  
    if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
  69.  
    hero.move(cfg.SCREENSIZE, 'left')
  70.  
    if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
  71.  
    hero.move(cfg.SCREENSIZE, 'right')
  72.  
    # --随机生成食物
  73.  
    generate_food_count = 1
  74.  
    if generate_food_count > generate_food_freq:
  75.  
    generate_food_freq = random.randint(10, 20)
  76.  
    generate_food_count = 0
  77.  
    food = Food(game_images, random.choice(['gold',] * 10 ['apple']), cfg.SCREENSIZE)
  78.  
    food_sprites_group.add(food)
  79.  
    # --更新食物
  80.  
    for food in food_sprites_group:
  81.  
    if food.update(): food_sprites_group.remove(food)
  82.  
    # --碰撞检测
  83.  
    for food in food_sprites_group:
  84.  
    if pygame.sprite.collide_mask(food, hero):
  85.  
    game_sounds['get'].play()
  86.  
    food_sprites_group.remove(food)
  87.  
    score = food.score
  88.  
    if score > highest_score: highest_score = score
  89.  
    # --画hero
  90.  
    hero.draw(screen)
  91.  
    # --画食物
  92.  
    food_sprites_group.draw(screen)
  93.  
    # --显示得分
  94.  
    score_text = f'Score: {score}, Highest: {highest_score}'
  95.  
    score_text = font.render(score_text, True, (0, 0, 0))
  96.  
    score_rect = score_text.get_rect()
  97.  
    score_rect.topleft = [5, 5]
  98.  
    screen.blit(score_text, score_rect)
  99.  
    # --判断游戏是否结束
  100.  
    if pygame.time.get_ticks() >= 90000:
  101.  
    break
  102.  
    # --更新屏幕
  103.  
    pygame.display.flip()
  104.  
    clock.tick(cfg.FPS)
  105.  
    # 游戏结束, 记录最高分并显示游戏结束画面
  106.  
    fp = open(cfg.HIGHEST_SCORE_RECORD_FILEPATH, 'w')
  107.  
    fp.write(str(highest_score))
  108.  
    fp.close()
  109.  
    return showEndGameInterface(screen, cfg, score, highest_score)
  110.  
     
  111.  
     
  112.  
    '''run'''
  113.  
    if __name__ == '__main__':
  114.  
    while main():
  115.  
    pass
学新通

最后

那么完整代码写完后就可以双击运行代码啦,如果有报错记得按我说的方法排查一下,么么哒!

感谢你们的阅读😆

后续还会继续更新💓,欢迎持续关注📌哟~

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjfehe
系列文章
更多 icon
同类精品
更多 icon
继续加载