Fuggler
by QuantumBolt10209 lines8.3 KB
import pygame
import random
import sys
# --------------------------
# 🌍 COUNTRIES + FUGGLER COUNTS
# --------------------------
COUNTRIES = {
"United Kingdom": 125000,
"Ireland": 18000,
"USA": 210000,
"Canada": 42000,
"Australia": 38000,
"Germany": 29000,
"France": 26000,
"Japan": 55000,
"China": 72000,
"Brazil": 36000,
"South Africa": 17000
}
# --------------------------
# 🧟 ALL FUGGLER NAMES
# --------------------------
FUGGLER_NAMES = [
"Original Prototype #1",
"Wide Eyed Weirdo", "Two-Faced Freak", "Rabid Rabbit", "Oogah Boogah", "Lady Gugga",
"Grin Grin", "Gaptooth McGoo", "Grumpy Grumps", "Sasquoosh", "Sir Belch",
"Suspicious Fox", "Rainbow Rascal", "Munch Munch", "Tiny Terror", "Indecisive Monster",
"Reek-O", "Fiery Fluff", "Inferno", "Stinkface", "Snortle Bork",
"Slobber Snout", "Wart Hog", "Dizzy Dino", "Squawk Squawk", "Loop Loop",
"Gloop Gloop", "Chomp Chomp", "Burp Burp", "Snot Rocket", "Grim Grin"
]
# --------------------------
# 🎮 FUGGLER CLASS
# --------------------------
class Fuggler:
def __init__(self, name, country, is_leader=False):
self.name = name
self.country = country
self.is_leader = is_leader
self.x = 400 if is_leader else random.randint(-200, 1000)
self.y = 300 if is_leader else random.randint(-200, 800)
self.speed = 2.8 if is_leader else random.uniform(1.3, 2.1)
self.direction = "forward"
self.looking = "forward"
self.moving = True
self.stopped = False
self.size = 48 if is_leader else random.randint(24, 40)
self.color = (220, 20, 20) if is_leader else (
random.randint(40,255), random.randint(40,255), random.randint(40,255)
)
self.action = "walking"
self.timer = 0
# Movement
def walk_left(self):
if not self.stopped:
self.direction = "left"
self.x -= self.speed
def walk_right(self):
if not self.stopped:
self.direction = "right"
self.x += self.speed
def walk_up(self):
if not self.stopped:
self.direction = "up"
self.y -= self.speed
def walk_down(self):
if not self.stopped:
self.direction = "down"
self.y += self.speed
def run(self):
if not self.stopped:
s = self.speed * 1.8
if self.direction == "left": self.x -= s
elif self.direction == "right": self.x += s
elif self.direction == "up": self.y -= s
elif self.direction == "down": self.y += s
def stop(self):
self.stopped = True
self.moving = False
# Look
def look_left(self): self.looking = "left"
def look_right(self): self.looking = "right"
def look_up(self): self.looking = "up"
def look_down(self): self.looking = "down"
def look_front(self): self.looking = "front"
# Gross actions
def poop(self): self.action = "pooping"
def fart(self): self.action = "farting"
def puke(self): self.action = "puking"
def pee(self): self.action = "peeing"
def burp(self): self.action = "burping"
# Update
def update(self, leader_x, leader_y, keys):
self.timer += 1
# YOU CONTROL LEADER
if self.is_leader:
if keys[pygame.K_LEFT]: self.walk_left()
if keys[pygame.K_RIGHT]: self.walk_right()
if keys[pygame.K_UP]: self.walk_up()
if keys[pygame.K_DOWN]: self.walk_down()
if keys[pygame.K_LSHIFT]: self.run()
if keys[pygame.K_SPACE]: self.stop()
if keys[pygame.K_1]: self.look_left()
if keys[pygame.K_2]: self.look_right()
if keys[pygame.K_3]: self.look_up()
if keys[pygame.K_4]: self.look_down()
if keys[pygame.K_5]: self.look_front()
if keys[pygame.K_p]: self.poop()
if keys[pygame.K_f]: self.fart()
if keys[pygame.K_u]: self.puke()
if keys[pygame.K_e]: self.pee()
if keys[pygame.K_b]: self.burp()
# OTHERS FOLLOW YOU
else:
dx = leader_x - self.x
dy = leader_y - self.y
dist = (dx**2 + dy**2)**0.5
if dist > 70:
self.x += (dx / dist) * self.speed
self.y += (dy / dist) * self.speed
# Random gross stuff
if self.timer > random.randint(70, 200):
self.timer = 0
r = random.randint(1,5)
if r == 1: self.poop()
elif r == 2: self.fart()
elif r == 3: self.puke()
elif r == 4: self.pee()
elif r == 5: self.burp()
# Keep in screen
self.x = max(10, min(790, self.x))
self.y = max(10, min(590, self.y))
# Draw
def draw(self, screen):
pygame.draw.circle(screen, self.color, (int(self.x), int(self.y)), self.size)
# Eyes
ox, oy = 0,0
if self.looking == "left": ox=-6
elif self.looking == "right": ox=6
elif self.looking == "up": oy=-6
elif self.looking == "down": oy=6
pygame.draw.circle(screen, (255,255,255), (int(self.x-5+ox), int(self.y-4+oy)), 4)
pygame.draw.circle(screen, (255,255,255), (int(self.x+5+ox), int(self.y-4+oy)), 4)
# Mouth / Action
if self.action in ["pooping","farting","puking","peeing"]:
pygame.draw.arc(screen, (0,0,0), [self.x-8, self.y, 16, 10], 3.14, 6.28, 3)
else:
pygame.draw.arc(screen, (0,0,0), [self.x-8, self.y+3, 16, 10], 0, 3.14, 3)
# --------------------------
# 🚀 MAIN GAME
# --------------------------
def main():
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("AXEL'S FUGGLER WORLD")
clock = pygame.time.Clock()
big_font = pygame.font.SysFont("Arial", 50, bold=True)
small_font = pygame.font.SysFont("Arial", 26)
# CREATE ALL FUGGLERS
all_fugglers = []
leader = Fuggler("Original Prototype #1", "The Beginning", is_leader=True)
all_fugglers.append(leader)
# Spawn Fugglers from every country
for country, _ in COUNTRIES.items():
for _ in range(35):
name = random.choice(FUGGLER_NAMES[1:])
all_fugglers.append(Fuggler(name, country))
game_state = "intro" # intro -> playing
while True:
screen.fill((230, 240, 250))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# Click START
if event.type == pygame.MOUSEBUTTONDOWN and game_state == "intro":
mx, my = pygame.mouse.get_pos()
if 220 < mx < 580 and 340 < my < 420:
game_state = "playing"
# 📺 INTRO SCREEN
if game_state == "intro":
t1 = big_font.render("AXEL'S FUGGLER GAME", True, (190, 0, 0))
t2 = big_font.render("🌍 WORLD EDITION 🌍", True, (0, 110, 200))
d1 = small_font.render("YOU ARE THE FIRST FUGGLER EVER!", True, (0,0,0))
d2 = small_font.render("EVERY FUGGLER FROM EVERY COUNTRY FOLLOWS YOU!", True, (0,0,0))
d3 = small_font.render("Walk • Run • Poop • Fart • Puke • Pee", True, (130,0,0))
screen.blit(t1, (120, 130))
screen.blit(t2, (140, 200))
screen.blit(d1, (115, 270))
screen.blit(d2, (85, 310))
screen.blit(d3, (130, 350))
# START BUTTON
pygame.draw.rect(screen, (0, 170, 0), (220, 340, 360, 80), border_radius=15)
start_text = big_font.render("START", True, (255,255,255))
screen.blit(start_text, (345, 350))
# 🎮 GAMEPLAY
elif game_state == "playing":
keys = pygame.key.get_pressed()
# Update + Draw all
for f in all_fugglers:
f.update(leader.x, leader.y, keys)
f.draw(screen)
# Controls text
help_text = small_font.render("Arrows = Move | Shift = Run | P/F/U/E = Actions", True, (0,0,0))
screen.blit(help_text, (12, 12))
pygame.display.flip()
clock.tick(30)
if __name__ == "__main__":
main()Game Source: Fuggler
Creator: QuantumBolt10
Libraries: none
Complexity: complex (209 lines, 8.3 KB)
The full source code is displayed above on this page.
Remix Instructions
To remix this game, copy the source code above and modify it. Add a ARCADELAB header at the top with "remix_of: fuggler-quantumbolt10" to link back to the original. Then publish at arcadelab.ai/publish.