最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

python小游戏源代码

来源:动视网 责编:小OO 时间:2025-09-25 21:26:27
文档

python小游戏源代码

python小游戏源代码吃金币小游戏源码分享:123456710111213141516171819202122232425262728293031323334353637383940414243444547484950515253545556575859606162636566676869707172737475767778798081828384858687889091929394959697991001011021031041051061071081091101111
推荐度:
导读python小游戏源代码吃金币小游戏源码分享:123456710111213141516171819202122232425262728293031323334353637383940414243444547484950515253545556575859606162636566676869707172737475767778798081828384858687889091929394959697991001011021031041051061071081091101111
python小游戏源代码

吃金币小游戏源码分享:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115import 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 = pygame.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

文档

python小游戏源代码

python小游戏源代码吃金币小游戏源码分享:123456710111213141516171819202122232425262728293031323334353637383940414243444547484950515253545556575859606162636566676869707172737475767778798081828384858687889091929394959697991001011021031041051061071081091101111
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top