master #1
@ -1,10 +1,7 @@
|
||||
### TO DO: PLANT SPRITES, PLANT GROWTH ###
|
||||
|
||||
# Import the pygame module
|
||||
import pygame
|
||||
|
||||
# Import pygame.locals for easier access to key coordinates
|
||||
# Updated to conform to flake8 and black standards
|
||||
from pygame.locals import (
|
||||
K_UP,
|
||||
K_LEFT,
|
||||
@ -14,6 +11,7 @@ from pygame.locals import (
|
||||
QUIT
|
||||
)
|
||||
|
||||
# Import other files from project
|
||||
import field as F
|
||||
import tractor as T
|
||||
import plant as P
|
||||
@ -32,26 +30,29 @@ pygame.display.set_caption("Inteligentny Traktor")
|
||||
# The size is determined by the constant SCREEN_WIDTH and SCREEN_HEIGHT
|
||||
screen = pygame.display.set_mode((D.SCREEN_WIDTH, D.SCREEN_HEIGHT))
|
||||
|
||||
#define map
|
||||
|
||||
# Define the map of the field
|
||||
mapschema = maps.createField()
|
||||
|
||||
# Create field array
|
||||
field = []
|
||||
|
||||
# Populate the field array
|
||||
for row in range(D.GSIZE):
|
||||
field.append([])
|
||||
for column in range(D.GSIZE):
|
||||
fieldbit = F.Field(row, column, mapschema[column][row])
|
||||
field[row].append(fieldbit)
|
||||
|
||||
# Create Tractor object
|
||||
tractor = T.Tractor(field, [0,0])
|
||||
|
||||
tractor = T.Tractor(field[0][0])
|
||||
|
||||
# Define the map of plants
|
||||
mapschema = maps.createPlants()
|
||||
|
||||
# Createt plants array
|
||||
plants = []
|
||||
|
||||
# Populate the plants array
|
||||
for row in range(D.GSIZE):
|
||||
plants.append([])
|
||||
for column in range(D.GSIZE):
|
||||
@ -59,14 +60,16 @@ for row in range(D.GSIZE):
|
||||
plantbit = P.Plant(field[row][column], mapschema[column][row])
|
||||
plants[row].append(plantbit)
|
||||
|
||||
|
||||
# Create list for tractor instructions
|
||||
path = []
|
||||
|
||||
# Variable to keep the main loop running
|
||||
RUNNING = True
|
||||
|
||||
# Variable conroling timed eventes
|
||||
TICKER = 0
|
||||
|
||||
# Initialize clock
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
|
||||
@ -84,11 +87,14 @@ while RUNNING:
|
||||
elif event.type == QUIT:
|
||||
RUNNING = False
|
||||
|
||||
# Create key Node that will be used to calculate tractor instructions
|
||||
processor = N.Node(field, tractor.position, tractor.direction)
|
||||
|
||||
# If path is empty or nonexistent, create new one
|
||||
if path is None or len(path) == 0:
|
||||
path = processor.findPathToPlant()
|
||||
|
||||
# control tractor by poping instructions from path list
|
||||
if path is not None:
|
||||
if path[0] == "move":
|
||||
tractor.move()
|
||||
@ -105,9 +111,10 @@ while RUNNING:
|
||||
else:
|
||||
path.pop(0)
|
||||
|
||||
# Get all keys pressed at a time
|
||||
# Get all keys pressed at a time CURRENTLY UNUSED
|
||||
pressed_keys = pygame.key.get_pressed()
|
||||
|
||||
# control tractor with pressed keys CURRENTLY UNUSED
|
||||
if pressed_keys[K_UP]:
|
||||
tractor.move()
|
||||
elif pressed_keys[K_LEFT]:
|
||||
@ -123,23 +130,27 @@ while RUNNING:
|
||||
for column in range(D.GSIZE):
|
||||
screen.blit(field[row][column].surf, field[row][column].rect)
|
||||
|
||||
# Draw the tactor
|
||||
screen.blit(tractor.surf, tractor.rect)
|
||||
|
||||
# Draw the player on the screen
|
||||
# Plants grow with every 10th tick, then they are drawn
|
||||
for row in plants:
|
||||
for plant in row:
|
||||
if TICKER % 10 == 0:
|
||||
plant.grow()
|
||||
plant.tick()
|
||||
plant.grow()
|
||||
screen.blit(plant.surf, plant.rect)
|
||||
|
||||
# Field are drying with every 100th tick
|
||||
if TICKER == 0:
|
||||
for row in range(D.GSIZE):
|
||||
for column in range(D.GSIZE):
|
||||
field[row][column].dehydrate()
|
||||
|
||||
# Increment ticker
|
||||
TICKER = (TICKER + 1)%100
|
||||
|
||||
# Update the screen
|
||||
pygame.display.flip()
|
||||
|
||||
|
||||
# Ensure program maintains a stable framerate
|
||||
clock.tick(8)
|
||||
|
Loading…
Reference in New Issue
Block a user