User prompt
Please fix the bug: 'ReferenceError: background is not defined' in or related to this line: 'if (background && background2) {' Line Number: 409
User prompt
make background image animate
User prompt
Please fix the bug: 'TypeError: tween.add is not a function' in or related to this line: 'tween.add({' Line Number: 70 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
enenmy explode after lose
User prompt
control from bottom
User prompt
make smooth control ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
add background
User prompt
reduce enemy multiple bullet
Code edit (1 edits merged)
Please save this source code
User prompt
Boss Battle Blitz
Initial prompt
import pygame import random import sys # Inisialisasi Pygame pygame.init() # Ukuran layar WIDTH = 480 HEIGHT = 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Vertical Shooter: Boss Battle") # Warna BLACK = (0, 0, 0) WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) # Clock untuk mengatur FPS clock = pygame.time.Clock() FPS = 60 # Kelas Player class Player(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((50, 40)) self.image.fill(GREEN) self.rect = self.image.get_rect() self.rect.centerx = WIDTH // 2 self.rect.bottom = HEIGHT - 10 self.speed_x = 0 self.health = 100 self.shoot_delay = 250 # delay tembakan dalam ms self.last_shot = pygame.time.get_ticks() def update(self): # Gerakan player self.speed_x = 0 keystate = pygame.key.get_pressed() if keystate[pygame.K_LEFT]: self.speed_x = -5 if keystate[pygame.K_RIGHT]: self.speed_x = 5 self.rect.x += self.speed_x # Batasi player agar tidak keluar layar if self.rect.right > WIDTH: self.rect.right = WIDTH if self.rect.left < 0: self.rect.left = 0 def shoot(self): now = pygame.time.get_ticks() if now - self.last_shot > self.shoot_delay: self.last_shot = now bullet = Bullet(self.rect.centerx, self.rect.top) all_sprites.add(bullet) bullets.add(bullet) # Kelas Bullet class Bullet(pygame.sprite.Sprite): def __init__(self, x, y): super().__init__() self.image = pygame.Surface((5, 10)) self.image.fill(BLUE) self.rect = self.image.get_rect() self.rect.centerx = x self.rect.bottom = y self.speedy = -10 def update(self): self.rect.y += self.speedy # Hapus bullet jika keluar layar if self.rect.bottom < 0: self.kill() # Kelas Boss class Boss(pygame.sprite.Sprite): def __init__(self): super().__init__() self.image = pygame.Surface((100, 80)) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.centerx = WIDTH // 2 self.rect.y = 50 self.speed_x = 3 self.health = 200 self.shoot_delay = 1000 self.last_shot = pygame.time.get_ticks() self.pattern_timer = pygame.time.get_ticks() self.pattern_duration = 3000 # 3 detik self.movement_pattern = 0 def update(self): # Ganti pola gerakan setiap beberapa detik now = pygame.time.get_ticks() if now - self.pattern_timer > self.pattern_duration: self.pattern_timer = now self.movement_pattern = random.randint(0, 2) # Pola gerakan boss if self.movement_pattern == 0: # Diam self.speed_x = 0 elif self.movement_pattern == 1: # Gerak kiri-kanan self.speed_x = 3 elif self.movement_pattern == 2: # Gerak lebih cepat self.speed_x = 5 self.rect.x += self.speed_x # Pantulan jika mencapai tepi layar if self.rect.right > WIDTH or self.rect.left < 0: self.speed_x *= -1 def shoot(self): now = pygame.time.get_ticks() if now - self.last_shot > self.shoot_delay: self.last_shot = now # Tembakan boss (3 arah) bullet1 = EnemyBullet(self.rect.left + 20, self.rect.bottom) bullet2 = EnemyBullet(self.rect.centerx, self.rect.bottom) bullet3 = EnemyBullet(self.rect.right - 20, self.rect.bottom) all_sprites.add(bullet1, bullet2, bullet3) enemy_bullets.add(bullet1, bullet2, bullet3) # Kelas Enemy Bullet class EnemyBullet(pygame.sprite.Sprite): def __init__(self, x, y): super().__init__() self.image = pygame.Surface((8, 15)) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.centerx = x self.rect.top = y self.speedy = 7 def update(self): self.rect.y += self.speedy # Hapus bullet jika keluar layar if self.rect.top > HEIGHT: self.kill() # Kelas Explosion class Explosion(pygame.sprite.Sprite): def __init__(self, center, size): super().__init__() self.size = size self.image = pygame.Surface((size, size)) self.image.fill(RED) self.rect = self.image.get_rect() self.rect.center = center self.frame = 0 self.last_update = pygame.time.get_ticks() self.frame_rate = 50 # ms def update(self): now = pygame.time.get_ticks() if now - self.last_update > self.frame_rate: self.last_update = now self.frame += 1 if self.frame == 8: # Jumlah frame animasi self.kill() else: # Ubah warna untuk efek animasi sederhana if self.frame % 2 == 0: self.image.fill(WHITE) else: self.image.fill(RED) # Fungsi untuk menggambar health bar def draw_health_bar(surface, x, y, health, max_health): BAR_LENGTH = 100 BAR_HEIGHT = 10 fill = (health / max_health) * BAR_LENGTH outline_rect = pygame.Rect(x, y, BAR_LENGTH, BAR_HEIGHT) fill_rect = pygame.Rect(x, y, fill, BAR_HEIGHT) pygame.draw.rect(surface, GREEN, fill_rect) pygame.draw.rect(surface, WHITE, outline_rect, 2) # Fungsi untuk menampilkan teks di layar def draw_text(surface, text, size, x, y): font = pygame.font.SysFont("arial", size) text_surface = font.render(text, True, WHITE) text_rect = text_surface.get_rect() text_rect.midtop = (x, y) surface.blit(text_surface, text_rect) # Membuat sprite groups all_sprites = pygame.sprite.Group() bullets = pygame.sprite.Group() enemy_bullets = pygame.sprite.Group() # Membuat player player = Player() all_sprites.add(player) # Membuat boss boss = Boss() all_sprites.add(boss) # Game loop running = True game_over = False score = 0 while running: # Mengatur kecepatan game clock.tick(FPS) # Process input (events) for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: player.shoot() if event.key == pygame.K_r and game_over: # Reset game game_over = False all_sprites = pygame.sprite.Group() bullets = pygame.sprite.Group() enemy_bullets = pygame.sprite.Group() player = Player() all_sprites.add(player) boss = Boss() all_sprites.add(boss) score = 0 if not game_over: # Update all_sprites.update() # Boss shoot boss.shoot() # Cek collision bullet player dengan boss hits = pygame.sprite.spritecollide(boss, bullets, True) for hit in hits: boss.health -= 10 score += 10 if boss.health <= 0: explosion = Explosion(boss.rect.center, 80) all_sprites.add(explosion) boss.kill() game_over = True draw_text(screen, "YOU WIN!", 50, WIDTH // 2, HEIGHT // 2) draw_text(screen, "Press R to restart", 30, WIDTH // 2, HEIGHT // 2 + 60) # Cek collision bullet boss dengan player hits = pygame.sprite.spritecollide(player, enemy_bullets, True) for hit in hits: player.health -= 20 if player.health <= 0: explosion = Explosion(player.rect.center, 50) all_sprites.add(explosion) player.kill() game_over = True draw_text(screen, "GAME OVER", 50, WIDTH // 2, HEIGHT // 2) draw_text(screen, "Press R to restart", 30, WIDTH // 2, HEIGHT // 2 + 60) # Render screen.fill(BLACK) all_sprites.draw(screen) # Gambar health bar dan score draw_health_bar(screen, 5, 5, player.health, 100) draw_text(screen, f"Player HP: {player.health}", 18, 60, 5) draw_health_bar(screen, WIDTH - 105, 5, boss.health, 200) draw_text(screen, f"Boss HP: {boss.health}", 18, WIDTH - 40, 5) draw_text(screen, f"Score: {score}", 18, WIDTH // 2, 5) # Jika game over, tampilkan pesan if game_over: draw_text(screen, "Press R to restart", 30, WIDTH // 2, HEIGHT // 2 + 60) # Flip the display pygame.display.flip() pygame.quit() sys.exit()
/**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 });
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
16 bit image style top down ufo. In-Game asset. 2d. High contrast. No shadows
16 bit top down flyin war drone. In-Game asset. 2d. High contrast. No shadows
red oval fire ball. In-Game asset. 2d. High contrast. No shadows
top down cloud and blue sky disney style image. In-Game asset. 2d. High contrast. No shadows