arctic-masher/arctic-masher.py

96 lines
2.3 KiB
Python
Raw Normal View History

2023-05-17 06:29:36 +00:00
import pygame
import sys
import random
pygame.init()
clock = pygame.time.Clock()
bg_color = pygame.Color('cornsilk4')
red = pygame.Color('brown4')
blue = pygame.Color('cadetblue3')
green = pygame.Color('green3')
tile = 34
screen_width = tile * 50
screen_height = tile * 40
screen = pygame.display.set_mode((screen_width,screen_height))
2023-05-17 07:58:04 +00:00
pygame.display.set_caption('Arctic Masher')
2023-05-17 06:29:36 +00:00
class Player:
2023-05-17 07:05:33 +00:00
def __init__(self, x, y, color, keys):
2023-05-17 06:29:36 +00:00
self.x = x
self.y = y
self.color = color
2023-05-17 09:06:36 +00:00
commands = {
2023-05-17 07:58:04 +00:00
"n": lambda: self.move(0,-1),
"ne": lambda: self.move(1,-1),
"e": lambda: self.move(1,0),
"se": lambda: self.move(1,1),
"s": lambda: self.move(0,1),
"sw": lambda: self.move(-1,1),
"w": lambda: self.move(-1,0),
"nw": lambda: self.move(-1,-1),
}
2023-05-17 09:06:36 +00:00
self.commands = []
for key in keys:
self.commands.append((key[0], commands[key[1]]))
2023-05-17 06:29:36 +00:00
self.sprite = pygame.Rect((tile*x)+2,(tile*y)+2,tile-2,tile-2)
2023-05-17 09:06:36 +00:00
def useKeys(self, keys):
try:
for command in self.commands:
if keys[command[0]]:
command[1]()
except:
pass
2023-05-17 07:05:33 +00:00
def move(self, x, y):
self.x += x
self.y += y
2023-05-17 06:29:36 +00:00
players = []
2023-05-17 09:06:36 +00:00
players.append(Player(25, 20, red, [
(pygame.K_w, "n"),
(pygame.K_e, "ne"),
(pygame.K_d, "e"),
(pygame.K_c, "se"),
(pygame.K_x, "s"),
(pygame.K_z, "sw"),
(pygame.K_a, "w"),
(pygame.K_q, "nw"),
]))
players.append(Player(25, 20, green, [
(pygame.K_KP_8, "n"),
(pygame.K_KP_9, "ne"),
(pygame.K_KP_6, "e"),
(pygame.K_KP_3, "se"),
(pygame.K_KP_2, "s"),
(pygame.K_KP_1, "sw"),
(pygame.K_KP_4, "w"),
(pygame.K_KP_7, "nw"),
]))
2023-05-17 06:29:36 +00:00
game_font = pygame.font.Font("freesansbold.ttf",32)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
2023-05-17 07:05:33 +00:00
keys = pygame.key.get_pressed()
2023-05-17 09:06:36 +00:00
for player in players:
player.useKeys(keys)
2023-05-17 06:29:36 +00:00
# Rendering
screen.fill(bg_color)
for player in players:
player.sprite.x = (tile*player.x)+2
2023-05-17 07:35:09 +00:00
player.sprite.y = (tile*player.y)+2
2023-05-17 06:29:36 +00:00
pygame.draw.rect(screen, player.color, player.sprite)
pygame.display.flip()
clock.tick(60)