mirror of
https://forge.apps.education.fr/phroy/codetower.git
synced 2024-01-27 11:35:17 +01:00
89 lines
3.0 KiB
Python
89 lines
3.0 KiB
Python
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
|
from ct_lib import * # Bibliothèque CodeTower
|
|
|
|
###############################################################################
|
|
# ct_cmd.py
|
|
# @title: Commands for the CodeTower game
|
|
# @project: CodeTower
|
|
# @lang: fr,en
|
|
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
|
# @copyright: Copyright (C) 2022 Philippe Roy
|
|
# @license: GNU GPL
|
|
#
|
|
# En: This game is a tower defense coding game. The towers are driven by Python code.
|
|
# Fr: Ce simulateur est un jeu du type tower defense où les tours sont à piloter par la programmation Python.
|
|
#
|
|
###############################################################################
|
|
|
|
purple = (0.202, 0.114, 0.521,1)
|
|
turquoise = (0.051, 0.270, 0.279,1)
|
|
magenta = (0.799, 0.005, 0.314,1)
|
|
orange = (0.799, 0.130, 0.063,1)
|
|
yellow = (0.799, 0.617, 0.021, 1)
|
|
green = (0.246, 0.687, 0.078, 1)
|
|
red = (0.799, 0.031, 0.038, 1)
|
|
blue = (0.127, 0.456, 1.000, 1)
|
|
|
|
###############################################################################
|
|
# En: Threads management << DONT CHANGE THIS SECTION >>
|
|
# Fr: Gestion des tâches (threads) << NE PAS MODIFIER CETTE SECTION >>
|
|
###############################################################################
|
|
|
|
threads=[]
|
|
scene = bge.logic.getCurrentScene()
|
|
|
|
def start():
|
|
scene.objects['Terrain']['thread_cmd']=True
|
|
thread_start(threads, "commands", commands)
|
|
|
|
def stop():
|
|
thread_stop(threads, "commands")
|
|
|
|
def end():
|
|
ct_sleep (2)
|
|
print ("Threads commands #", len(threads)-1, "are arrived -> close them.")
|
|
scene.objects['Terrain']['thread_cmd']=False
|
|
|
|
###############################################################################
|
|
# En: Tower commands
|
|
# Fr: Commandes des tours
|
|
#
|
|
# Build a tower : ct_build (x, y, category, name, color, style)
|
|
# - x position (integer)
|
|
# - y position (integer)
|
|
# - category (string) : "Archer tower", "Mage tower" or "Barrack" (not implemented)
|
|
# - name (string)
|
|
# - color (RGB model) : purple, turquoise, magenta, orange, yellow, green, red or [R, G, B, 1]
|
|
# - style : square or round and version (A,B or C), exemple : 'square-A'
|
|
# - Return boolean flag
|
|
# - True : builded
|
|
# - False : not builded
|
|
#
|
|
# - exemple : ct_build("archer tower", 4,5, "Tower #1",yellow,"round-A")
|
|
#
|
|
# Remove a tower : ct_remove (x, y)
|
|
# - x position (integer)
|
|
# - y position (integer)
|
|
#
|
|
# Time management (temporization) : ct_sleep (delay)
|
|
# - delay : delay in seconds (float)
|
|
#
|
|
###############################################################################
|
|
|
|
def commands():
|
|
|
|
# Code your commands here ...
|
|
|
|
while True:
|
|
|
|
if ct_level() == 1:
|
|
ct_build(4,5, "Archer tower", "Tower #1", blue, "square-A")
|
|
|
|
if ct_level()==3:
|
|
ct_build(4,-2, "Archer tower", "Tower #2", blue, "square-A")
|
|
|
|
if ct_level()==2:
|
|
ct_build(5,5, "Mage tower", "Tower #3", magenta, "square-B")
|
|
|
|
end() # End of cycle << DONT CHANGE THIS LINE >>
|