🎉 ✨ moving player.
parent
20d8eb925a
commit
801b64b97f
|
@ -0,0 +1,3 @@
|
|||
*~*
|
||||
*\#*
|
||||
__pycache__
|
|
@ -0,0 +1,25 @@
|
|||
import pygame
|
||||
import numpy as np
|
||||
|
||||
class Actor:
|
||||
def __init__(self, world):
|
||||
self.world = world
|
||||
self.pos = np.array([64.0, 64.0])
|
||||
self.size = np.array([48.0, 48.0])
|
||||
self.color = pygame.Color(0, 0, 255)
|
||||
self.speed = 192.0
|
||||
|
||||
def draw(self, screen):
|
||||
pygame.draw.rect(screen, self.color, (
|
||||
self.pos[0] - self.size[0]/2,
|
||||
self.pos[1] - self.size[1]/2,
|
||||
self.size[0],
|
||||
self.size[1]
|
||||
))
|
||||
|
||||
def update(self, dt):
|
||||
pass
|
||||
|
||||
def phy_update(self, dt):
|
||||
pass
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
import pygame
|
||||
import numpy as np
|
||||
from . import actor
|
||||
|
||||
class Player(actor.Actor):
|
||||
def __init__(self, world):
|
||||
super().__init__(world)
|
||||
|
||||
def phy_update(self, dt):
|
||||
pass
|
||||
|
||||
def update(self, dt):
|
||||
delta = np.array([0.0, 0.0])
|
||||
keys = pygame.key.get_pressed()
|
||||
|
||||
if keys[pygame.K_z] or keys[pygame.K_w]:
|
||||
delta[1] -= 1.0
|
||||
|
||||
if keys[pygame.K_s]:
|
||||
delta[1] += 1.0
|
||||
|
||||
if keys[pygame.K_q] or keys[pygame.K_a]:
|
||||
delta[0] -= 1.0
|
||||
|
||||
if keys[pygame.K_d]:
|
||||
delta[0] += 1.0
|
||||
|
||||
norm = np.linalg.norm(delta)
|
||||
if norm > 0:
|
||||
delta /= norm
|
||||
delta *= self.speed
|
||||
|
||||
self.pos += delta * dt
|
||||
|
||||
|
||||
|
Binary file not shown.
|
@ -0,0 +1,22 @@
|
|||
* Actor can move
|
||||
* Load Map
|
||||
* Map Collision
|
||||
* Actors can Shoot
|
||||
* Actors can die
|
||||
* NPC states
|
||||
** Idle
|
||||
** Purchasing
|
||||
** Fighting
|
||||
** Dead
|
||||
|
||||
* Part I: The Desert
|
||||
** Follow Radar Instructions
|
||||
** Kill Some Desert Snakes
|
||||
** Enter the Bunker
|
||||
|
||||
* Part II: The Bunker
|
||||
** Shoot at enemies
|
||||
** Find and Activate Nuclear Weapons
|
||||
|
||||
* Part III: Enemies Waves
|
||||
** Survive
|
|
@ -0,0 +1,33 @@
|
|||
import pygame
|
||||
import world
|
||||
|
||||
pygame.init()
|
||||
screen = pygame.display.set_mode((800, 600))
|
||||
running = True
|
||||
clock = pygame.time.Clock()
|
||||
my_world = world.World()
|
||||
dt = 0.0
|
||||
phy_timer = 0.0
|
||||
phy_time = 0.2
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
while running:
|
||||
start = pygame.time.get_ticks()
|
||||
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
|
||||
screen.fill('black')
|
||||
my_world.update(dt)
|
||||
|
||||
if phy_timer >= phy_time:
|
||||
my_world.phy_update(phy_time)
|
||||
phy_timer = 0.0
|
||||
phy_timer += dt
|
||||
|
||||
my_world.draw(screen)
|
||||
pygame.display.flip()
|
||||
clock.tick(60)
|
||||
dt = (pygame.time.get_ticks() - start)/1000.0
|
|
@ -0,0 +1,2 @@
|
|||
numpy==1.26.4
|
||||
pygame==2.5.2
|
|
@ -0,0 +1,18 @@
|
|||
import pygame
|
||||
from actors import player
|
||||
|
||||
class World:
|
||||
def __init__(self):
|
||||
self.actors = [player.Player(self)]
|
||||
|
||||
def draw(self, screen):
|
||||
for actor in self.actors:
|
||||
actor.draw(screen)
|
||||
|
||||
def update(self, dt):
|
||||
for actor in self.actors:
|
||||
actor.update(dt)
|
||||
|
||||
def phy_update(self, dt):
|
||||
for actor in self.actors:
|
||||
actor.phy_update(dt)
|
Loading…
Reference in New Issue