codetower/ct_cmd.py

101 lines
3.3 KiB
Python
Raw Normal View History

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
2022-04-01 01:34:54 +02:00
#
# En: This game is a tower defense coding game. The towers are driven by Python code.
2022-03-23 00:27:11 +01:00
# 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)
2022-03-23 00:27:11 +01:00
###############################################################################
2022-03-23 00:27:11 +01:00
# En: Threads management << DONT CHANGE THIS SECTION >>
# Fr: Gestion des tâches (threads) << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
scene = bge.logic.getCurrentScene()
def start():
scene.objects['Terrain']['thread_cmd']=True
thread_cmd_start(commands)
def stop():
thread_cmd_stop()
2022-03-30 03:10:33 +02:00
def end():
ct_sleep (2)
print ("Commands thread is arrived.")
2022-03-30 03:10:33 +02:00
scene.objects['Terrain']['thread_cmd']=False
2022-03-23 00:27:11 +01:00
###############################################################################
2022-03-23 00:27:11 +01:00
# En: Tower commands
# Fr: Commandes des tours
#
2022-03-31 18:26:55 +02:00
# Build a tower : ct_build (x, y, category, name, color, style)
2022-03-23 00:27:11 +01:00
# - x position (integer)
# - y position (integer)
# - category (string) : "Archer tower", "Mage tower" or "Barrack" (not implemented)
2022-03-23 00:27:11 +01:00
# - 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'
2022-03-23 00:27:11 +01:00
# - Return boolean flag
# - True : builded
# - False : not builded
# - Exemple : ct_build(1,1, "Archer tower", "Tower #1",yellow,"round-A")
#
2022-03-31 18:26:55 +02:00
# Remove a tower : ct_remove (x, y)
2022-03-23 00:27:11 +01:00
# - x position (integer)
# - y position (integer)
#
# Get your level : ct_level ()
# - Return your level (integer)
#
2022-03-31 18:26:55 +02:00
# Time management (temporization) : ct_sleep (delay)
# - delay : delay in seconds (float)
2022-03-23 00:27:11 +01:00
#
###############################################################################
2022-03-23 00:27:11 +01:00
def commands():
# Code your commands here ...
2022-03-30 03:10:33 +02:00
while True:
2022-03-23 00:27:11 +01:00
if ct_level() == 1:
2022-03-30 03:10:33 +02:00
ct_build(4,5, "Archer tower", "Tower #1", blue, "square-A")
if ct_level()==2:
ct_build(4,-2, "Archer tower", "Tower #2", blue, "square-A")
2022-03-31 18:26:55 +02:00
if ct_level()==3:
ct_build(5,4, "Mage tower", "Tower #3", magenta, "square-B")
2022-03-30 03:10:33 +02:00
###############################################################################
# En: Externals calls << DONT CHANGE THIS SECTION >>
# Fr: Appels externes << NE PAS MODIFIER CETTE SECTION >>
###############################################################################
if __name__=='start':
start()
if __name__=='stop':
stop()