Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:pyxel:juego_tipo_endless_runner

Endless Runner clon

Juego tipo Endless Runner usando Pyxel.

El código fue generado por DeepSeek (una inteligencia artificial generativa)

import pyxel
import random
 
class AutoRunner:
    def __init__(self):
        pyxel.init(160, 120, title="Pyxel Runner", fps=60)
        self.reset_game()
        pyxel.run(self.update, self.draw)
 
    def reset_game(self):
        # Jugador
        self.player_x = 30
        self.player_y = 80
        self.jump_velocity = 0
        self.gravity = 0.5
        self.is_jumping = False
 
        # Obstáculos
        self.obstacles = []
        self.obstacle_speed = 2
        self.spawn_timer = 0
 
        # Estado del juego
        self.score = 0
        self.game_over = False
        self.ground_level = 90
 
    def update(self):
        if self.game_over:
            if pyxel.btnp(pyxel.KEY_R):
                self.reset_game()
            return
 
        # Movimiento automático del jugador
        self.score += 1
        self.obstacle_speed = 2 + self.score // 500  # Dificultad progresiva
 
        # Gravedad y salto
        self.player_y += self.jump_velocity
        self.jump_velocity += self.gravity
 
        # Colisión con el suelo
        if self.player_y >= self.ground_level:
            self.player_y = self.ground_level
            self.jump_velocity = 0
            self.is_jumping = False
 
        # Salto (tecla espacio o arriba)
        if pyxel.btnp(pyxel.KEY_SPACE) and not self.is_jumping:
            self.jump_velocity = -5
            self.is_jumping = True
 
        # Generar obstáculos
        self.spawn_timer += 1
        if self.spawn_timer > 30 - (self.score // 100):
            self.obstacles.append({
                'x': 160,
                'y': self.ground_level,
                'width': 10,
                'height': 20
            })
            self.spawn_timer = 0
 
        # Mover obstáculos
        for obstacle in self.obstacles:
            obstacle['x'] -= self.obstacle_speed
 
            # Detectar colisiones
            if (self.player_x < obstacle['x'] + obstacle['width'] and
                self.player_x + 10 > obstacle['x'] and
                self.player_y < obstacle['y'] + obstacle['height'] and
                self.player_y + 10 > obstacle['y']):
                self.game_over = True
 
        # Eliminar obstáculos fuera de pantalla
        self.obstacles = [o for o in self.obstacles if o['x'] > -20]
 
    def draw(self):
        pyxel.cls(12)  # Fondo celeste
 
        # Suelo
        pyxel.rect(0, self.ground_level + 10, 160, 20, 3)
 
        # Jugador
        pyxel.rect(self.player_x, self.player_y, 10, 10, 8 if self.is_jumping else 2)
 
        # Obstáculos
        for obstacle in self.obstacles:
            pyxel.rect(obstacle['x'], obstacle['y'], obstacle['width'], obstacle['height'], 8)
 
        # UI
        pyxel.text(5, 5, f"SCORE: {self.score}", 7)
        pyxel.text(5, 15, f"SPEED: {self.obstacle_speed}", 7)
 
        if self.game_over:
            pyxel.text(60, 50, "GAME OVER", 8)
            pyxel.text(45, 70, "Press R to restart", 7)
 
AutoRunner()
informatica/programacion/python/pyxel/juego_tipo_endless_runner.txt · Última modificación: por tempwin