chatgptgame1.py

Created by naul

Created on May 02, 2023

5.2 KB

Un jeu créé entièrement par ChatGPT OpenAI


import math
import kandinsky
import turtle
import time
import ion

# Set up the game window

# Set up the player
player_size = 16
player_hitbox_size = 14
player_x = 104
player_y = 190
player_dx = 0
player_dy = 0
player_speed = 2

# Set up the player bullet
player_bullet_size = 4
player_bullet_x = None
player_bullet_y = None
player_bullet_dx = None
player_bullet_dy = None
player_bullet_speed = 5

# Set up the boss
boss_size = 64
boss_hitbox_size = 60
boss_x = 79
boss_y = 10
boss_dx = 1
boss_dy = 1
boss_speed = 1

# Set up the boss bullet
boss_bullet_size = 8
boss_bullet_x = None
boss_bullet_y = None
boss_bullet_dx = None
boss_bullet_dy = None
boss_bullet_speed = 2

# Set up the boss health
boss_health = 100

# Define a function to draw a rectangle
def draw_rect(x, y, width, height, color):
    kandinsky.fill_rect(x, y, width, height, color)
    kandinsky.draw_rect(x, y, width, height, color)

# Define a function to draw the player
def draw_player():
    draw_rect(player_x, player_y, player_size, player_size, (255, 255, 0))
    draw_rect(player_x + (player_size - player_hitbox_size) // 2, player_y + (player_size - player_hitbox_size) // 2, player_hitbox_size, player_hitbox_size, (0, 0, 0))

# Define a function to draw the player bullet
def draw_player_bullet():
    if player_bullet_x is not None:
        draw_rect(player_bullet_x, player_bullet_y, player_bullet_size, player_bullet_size, (255, 255, 255))

# Define a function to draw the boss
def draw_boss():
    draw_rect(boss_x, boss_y, boss_size, boss_size, (255, 0, 0))
    draw_rect(boss_x + (boss_size - boss_hitbox_size) // 2, boss_y + (boss_size - boss_hitbox_size) // 2, boss_hitbox_size, boss_hitbox_size, (0, 0, 0))

# Define a function to draw the boss bullet
def draw_boss_bullet():
    if boss_bullet_x is not None:
        draw_rect(boss_bullet_x, boss_bullet_y, boss_bullet_size, boss_bullet_size, (0, 0, 255))

# Define a function to check for hitbox collision
def hitbox_collision(x1, y1, size1, x2, y2, size2):
    return x1 + size1 > x2 and x2 + size2 > x1 and y1 + size1 > y2 and y2 + size2 > y1

# Define a function to move the player
def move_player():
    global player_x, player_y, player_dx, player_dy
    
    # Set the player's velocity based on input
    player_dx = 0
    if ion.keyboard.is_pressed("LEFT"):
        player_dx = -player_speed
    if ion.keyboard.is_pressed("RIGHT"):
        player_dx = player_speed
    
    # Move the player
    player_x += player_dx
    player_y += player_dy
    
    # Keep the player within the game window
    if player_x < 0:
        player_x = 0
    if player_x > 208:
        player_x = 208
    if player_y < 0:
        player_y = 0
    if player_y > 208:
        player_y = 208

# Define a function to move the player bullet
def move_player_bullet():
    global player_bullet_x, player_bullet_y, player_bullet_dx, player_bullet_dy
    
    # Move the player bullet
    if player_bullet_x is not None:
        player_bullet_x += player_bullet_dx
        player_bullet_y += player_bullet_dy
        
        # Check if the player bullet is out of bounds
        if player_bullet_x < 0 or player_bullet_x > 208 or player_bullet_y < 0 or player_bullet_y > 208:
            player_bullet_x = None
            player_bullet_y = None
            player_bullet_dx = None
            player_bullet_dy = None
            
        # Check if the player bullet hits the boss
        if hitbox_collision(player_bullet_x, player_bullet_y, player_bullet_size, boss_x, boss_y, boss_hitbox_size):
            global boss_health
            boss_health -= 10
            player_bullet_x = None
            player_bullet_y = None
            player_bullet_dx = None
            player_bullet_dy = None
            
# Define a function to move the boss
def move_boss():
    global boss_x, boss_y, boss_dx, boss_dy
    
    # Move the boss
    boss_x += boss_dx
    boss_y += boss_dy
    
    # Reverse direction if the boss hits a wall
    if boss_x < 0 or boss_x > 158:
        boss_dx = -boss_dx
    if boss_y < 0 or boss_y > 118:
        boss_dy = -boss_dy
        
# Define a function to move the boss bullet
def move_boss_bullet():
    global boss_bullet_x, boss_bullet_y, boss_bullet_dx, boss_bullet_dy
    
    # Move the boss bullet
    if boss_bullet_x is not None:
        boss_bullet_x += boss_bullet_dx
        boss_bullet_y += boss_bullet_dy
        
        # Check if the boss bullet is out of bounds
        if boss_bullet_x < 0 or boss_bullet_x > 208 or boss_bullet_y < 0 or boss_bullet_y > 208:
            boss_bullet_x = None
            boss_bullet_y = None
            boss_bullet_dx = None
            boss_bullet_dy = None
            
        # Check if the boss bullet hits the player
        if hitbox_collision(boss_bullet_x, boss_bullet_y, boss_bullet_size, player_x, player_y, player_hitbox_size):
            global player_health
            player_health -= 10
            boss_bullet_x = None
            boss_bullet_y = None
            boss_bullet_dx = None
            boss_bullet_dy = None

# Define a function to check for collisions between hitboxes
def hitbox_collision(x1, y1, size1, x2, y2, size2):
    distance = math.sqrt((x1-x2)**2 + (y1-y2)**2)
    if distance < size1/2 + size2/2:
        return True
    else:
        return False

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.