小恐龙 py小游戏

简介: 6小恐龙

6小恐龙

玩法 上下控制起跳躲避

源代码如下:

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

'''main'''
def main(highest_score):

# 游戏初始化
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE)
pygame.display.set_caption('九歌')
# 导入所有声音文件
sounds = {}
for key, value in cfg.AUDIO_PATHS.items():
    sounds[key] = pygame.mixer.Sound(value)
# 游戏开始界面
GameStartInterface(screen, sounds, cfg)
# 定义一些游戏中必要的元素和变量
score = 0
score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(534, 15), bg_color=cfg.BACKGROUND_COLOR)
highest_score = highest_score
highest_score_board = Scoreboard(cfg.IMAGE_PATHS['numbers'], position=(435, 15), bg_color=cfg.BACKGROUND_COLOR, is_highest=True)
dino = Dinosaur(cfg.IMAGE_PATHS['dino'])
ground = Ground(cfg.IMAGE_PATHS['ground'], position=(0, cfg.SCREENSIZE[1]))
cloud_sprites_group = pygame.sprite.Group()
cactus_sprites_group = pygame.sprite.Group()
ptera_sprites_group = pygame.sprite.Group()
add_obstacle_timer = 0
score_timer = 0
# 游戏主循环
clock = pygame.time.Clock()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE or event.key == pygame.K_UP:
                dino.jump(sounds)
            elif event.key == pygame.K_DOWN:
                dino.duck()
        elif event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
            dino.unduck()
    screen.fill(cfg.BACKGROUND_COLOR)
    # --随机添加云
    if len(cloud_sprites_group) < 5 and random.randrange(0, 300) == 10:
        cloud_sprites_group.add(Cloud(cfg.IMAGE_PATHS['cloud'], position=(cfg.SCREENSIZE[0], random.randrange(30, 75))))
    # --随机添加仙人掌/飞龙
    add_obstacle_timer += 1
    if add_obstacle_timer > random.randrange(50, 150):
        add_obstacle_timer = 0
        random_value = random.randrange(0, 10)
        if random_value >= 5 and random_value <= 7:
            cactus_sprites_group.add(Cactus(cfg.IMAGE_PATHS['cacti']))
        else:
            position_ys = [cfg.SCREENSIZE[1]*0.82, cfg.SCREENSIZE[1]*0.75, cfg.SCREENSIZE[1]*0.60, cfg.SCREENSIZE[1]*0.20]
            ptera_sprites_group.add(Ptera(cfg.IMAGE_PATHS['ptera'], position=(600, random.choice(position_ys))))
    # --更新游戏元素
    dino.update()
    ground.update()
    cloud_sprites_group.update()
    cactus_sprites_group.update()
    ptera_sprites_group.update()
    score_timer += 1
    if score_timer > (cfg.FPS//12):
        score_timer = 0
        score += 1
        score = min(score, 99999)
        if score > highest_score:
            highest_score = score
        if score % 100 == 0:
            sounds['point'].play()
        if score % 1000 == 0:
            ground.speed -= 1
            for item in cloud_sprites_group:
                item.speed -= 1
            for item in cactus_sprites_group:
                item.speed -= 1
            for item in ptera_sprites_group:
                item.speed -= 1
    # --碰撞检测
    for item in cactus_sprites_group:
        if pygame.sprite.collide_mask(dino, item):
            dino.die(sounds)
    for item in ptera_sprites_group:
        if pygame.sprite.collide_mask(dino, item):
            dino.die(sounds)
    # --将游戏元素画到屏幕上
    dino.draw(screen)
    ground.draw(screen)
    cloud_sprites_group.draw(screen)
    cactus_sprites_group.draw(screen)
    ptera_sprites_group.draw(screen)
    score_board.set(score)
    highest_score_board.set(highest_score)
    score_board.draw(screen)
    highest_score_board.draw(screen)
    # --更新屏幕
    pygame.display.update()
    clock.tick(cfg.FPS)
    # --游戏是否结束
    if dino.is_dead:
        break
# 游戏结束界面
return GameEndInterface(screen, cfg), highest_score

'''run'''
if name == '__main__':

highest_score = 0
while True:
    flag, highest_score = main(highest_score)
    if not flag: break

le/details/124330889

目录
相关文章
|
9月前
|
定位技术 Python
用Python Tkinter打造的精彩连连看小游戏【附源码】
用Python Tkinter打造的精彩连连看小游戏【附源码】
209 0
|
Python
用python制作剪刀石头布的小游戏
用python制作剪刀石头布的小游戏
148 0
|
Python
python及pygame雷霆战机游戏项目实战05 改进的碰撞
python及pygame雷霆战机游戏项目实战05 改进的碰撞
145 0
|
Python
python小游戏——跑酷小恐龙代码开源
python小游戏——跑酷小恐龙代码开源
866 0
python小游戏——跑酷小恐龙代码开源
|
程序员 Linux API
Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)
了解Python 程序员过中秋Python+pygame 制作拼图小游戏(附源码:5源码)。
278 0
|
Python
Python实践 制作石头剪刀布游戏 带GUI界面
实现 “石头剪刀布” 游戏
322 0
Python实践 制作石头剪刀布游戏 带GUI界面
100行Python代码,完成一个打地鼠小游戏!
最近在学习使用 Python 来完成一些小游戏,使用到的有 Pygame 和 PyQt5 等,在前面,已经通过 Pygame 完成来一个小小的 Mp3 工具,Mp3 小工具 最近,又学习了下 PyQt5,根据网上前人的代码,整理了一个打地鼠的小游戏,今天也分享给大家,一起学习!
100行Python代码,完成一个打地鼠小游戏!
|
Python
Python:飞机大战游戏6:英雄飞机
Python:飞机大战游戏6:英雄飞机
205 0
Python:飞机大战游戏6:英雄飞机
|
Python
10分钟教你用Python做个打飞机小游戏超详细教程
10分钟教你用Python做个打飞机小游戏超详细教程
370 0
10分钟教你用Python做个打飞机小游戏超详细教程