🤖 Add & move robot on the grid

This commit is contained in:
HS-157 2024-05-12 19:03:36 +02:00
parent ec40c35fda
commit 792fec50d6
2 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,43 @@
import arcade
import logging
class Bot(arcade.Sprite):
"""
Bot sprite
"""
def __init__(self, start, grid, scale=0.75):
self.sprite = ":resources:images/animated_characters/robot/robot_idle.png"
self.grid = grid
self.pos = list(start)
super().__init__(self.sprite, scale, hit_box_algorithm="None")
self.set_pos()
def set_pos(self):
for tile in self.grid.tiles:
if tile.pos == tuple(self.pos):
self.position = tile.position
logging.debug(f"Move bot to {self.pos} - {self.position}")
break
def left(self):
if self.pos[0] > 0:
self.pos[0] -= 1
self.set_pos()
def right(self):
if self.pos[0] < self.grid.row - 1:
self.pos[0] += 1
self.set_pos()
def up(self):
if self.pos[1] < self.grid.column - 1:
self.pos[1] += 1
self.set_pos()
def down(self):
if self.pos[1] > 0:
self.pos[1] -= 1
self.set_pos()

View File

@ -3,6 +3,7 @@ import jacovirt.logger
import logging
from jacovirt.bot.grid import Grid
from jacovirt.bot.bot import Bot
# Screen title and size
SCREEN_TITLE = "JacoVirt Bot"
@ -30,12 +31,14 @@ class Window(arcade.Window):
arcade.set_background_color(BACKGROUND_COLOR)
self.grid = None
self.bot = None
def setup(self):
"""Set up the pad"""
logging.info("Set up the bot.")
self.grid = Grid(X_START, Y_START, ROW, COLUMN, SIZE_TILE, SPACING)
self.bot = Bot((0,5), self.grid)
def on_draw(self):
"""Render the screen"""
@ -51,6 +54,8 @@ class Window(arcade.Window):
for tile in self.grid.tiles:
tile.debug()
self.bot.draw()
def on_key_press(self, symbol, modifiers):
"""Called when the user presses key"""
if symbol == arcade.key.R:
@ -60,6 +65,15 @@ class Window(arcade.Window):
if symbol == arcade.key.Q:
arcade.exit()
if symbol == arcade.key.LEFT:
self.bot.left()
if symbol == arcade.key.RIGHT:
self.bot.right()
if symbol == arcade.key.UP:
self.bot.up()
if symbol == arcade.key.DOWN:
self.bot.down()
def main():
"""Main method"""
window = Window()