mirror of
https://forge.apps.education.fr/blender-edutech/ropy.git
synced 2024-01-27 08:23:20 +01:00
162 lines
5.6 KiB
Python
162 lines
5.6 KiB
Python
|
import bge # Bibliothèque Blender Game Engine (BGE)
|
|||
|
import random
|
|||
|
from ropy_lib import *
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# ropy_init.py
|
|||
|
# @title: Initialisation du Robot Ropy
|
|||
|
# @project: Blender-EduTech
|
|||
|
# @lang: fr
|
|||
|
# @authors: Philippe Roy <philippe.roy@ac-grenoble.fr>
|
|||
|
# @copyright: Copyright (C) 2020-2021 Philippe Roy
|
|||
|
# @license: GNU GPL
|
|||
|
#
|
|||
|
# Initialisation du Robot
|
|||
|
#
|
|||
|
# Ropy est destiné à la découverte de la programmation procédurale et du language Python.
|
|||
|
# A travers plusieurs challenges, donc de manière graduée, les élèves vont apprendre à manipuler les structures algoritmiques de base et à les coder en Python.
|
|||
|
#
|
|||
|
###############################################################################
|
|||
|
|
|||
|
def main():
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Récupérer les objets du moteur 3D (BGE)
|
|||
|
###############################################################################
|
|||
|
|
|||
|
scene = bge.logic.getCurrentScene() # Récupérer la scène 3D
|
|||
|
cont = bge.logic.getCurrentController() # Récupérer le contrô´leur BGE
|
|||
|
obj = cont.owner # Récupérer le robot de la scène 3D
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Initialisation
|
|||
|
###############################################################################
|
|||
|
|
|||
|
# niveau = obj['level']
|
|||
|
|
|||
|
# print ("")
|
|||
|
# print ("Construction du niveau ...")
|
|||
|
|
|||
|
# # Position initiale du robot
|
|||
|
# rp_init_position() # zone de 10x10 -> par défaut, au centre case (X,Y) : 5,5
|
|||
|
# rp_orientation("est") # il y a nord, sud, est, ouest
|
|||
|
# obj['mvts'] = "" # Liste des mouvements
|
|||
|
# obj['mvt_i'] = 0 # Liste des mouvements
|
|||
|
# # obj.visible=False
|
|||
|
|
|||
|
# # Enlever les murs et les marques
|
|||
|
# def_murs=[]
|
|||
|
# rp_enlever_marques()
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Construction du niveau
|
|||
|
# Zone de 10x10
|
|||
|
#
|
|||
|
# Murs :
|
|||
|
# Longueur des murs : fixe d' une case
|
|||
|
# Position des murs : liste imbriquée : [[mur1_x1,mur1_y1,mur1_x2,mur1_y2],[mur2_x1,mur2_y1,mur2_x2,mur2_y2], ...]
|
|||
|
###############################################################################
|
|||
|
|
|||
|
niveau = obj['level']
|
|||
|
|
|||
|
print ("")
|
|||
|
print ("Construction du niveau ...")
|
|||
|
|
|||
|
# Enlever les murs et les marques
|
|||
|
def_murs=[]
|
|||
|
rp_enlever_marques()
|
|||
|
rp_orientation("est") # il y a nord, sud, est, ouest
|
|||
|
|
|||
|
# niveau 0 : Vide (bac à sable élève)
|
|||
|
if niveau==0:
|
|||
|
def_murs=[]
|
|||
|
obj['x_init'] = 5
|
|||
|
obj['y_init'] = 5
|
|||
|
|
|||
|
# niveau 10 : Bac à sable enseignant
|
|||
|
if niveau==10:
|
|||
|
|
|||
|
# Murs de test
|
|||
|
def_murs=[[4,3, 5,3],[4,3, 4,4]]
|
|||
|
# def_murs=[[4,3, 4,4]]
|
|||
|
# def_murs=[[4,3, 5,3]]
|
|||
|
rp_construire_murs(def_murs)
|
|||
|
obj['x_init'] = 5
|
|||
|
obj['y_init'] = 5
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# niveau 1 : Mission 1 : Les premiers pas de Ropy
|
|||
|
###############################################################################
|
|||
|
|
|||
|
if niveau==1:
|
|||
|
|
|||
|
# Petite maison
|
|||
|
def_murs=[
|
|||
|
[4,3, 4,4],[4,4, 4,5],[4,5, 4,6],
|
|||
|
[4,6, 5,6],[5,6, 6,6],[6,6, 7,6],
|
|||
|
[7,5, 7,6],[7,4, 7,5],[7,3, 7,4],
|
|||
|
[4,3, 5,3], [6,3, 7,3]]
|
|||
|
rp_construire_murs(def_murs)
|
|||
|
rp_marquer_objectif (7,2)
|
|||
|
obj['x_init'] = 5
|
|||
|
obj['y_init'] = 5
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Mission 2 : Sécuriser Ropy
|
|||
|
###############################################################################
|
|||
|
|
|||
|
if niveau==2:
|
|||
|
|
|||
|
# Petite maison
|
|||
|
def_murs=[
|
|||
|
[4,3, 4,4],[4,4, 4,5],[4,5, 4,6],
|
|||
|
[4,6, 5,6],[5,6, 6,6],[6,6, 7,6],
|
|||
|
[7,5, 7,6],[7,4, 7,5],[7,3, 7,4],
|
|||
|
[4,3, 5,3], [6,3, 7,3]]
|
|||
|
rp_construire_murs(def_murs)
|
|||
|
rp_marquer_objectif (7,2)
|
|||
|
obj['x_init'] = 5
|
|||
|
obj['y_init'] = 5
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Mission 3 : Partir au bout du monde
|
|||
|
###############################################################################
|
|||
|
|
|||
|
if niveau==3:
|
|||
|
def_murs=[]
|
|||
|
rp_marquer_objectif (10,10)
|
|||
|
obj['x_init'] = 5
|
|||
|
obj['y_init'] = 4
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Mission 4 : Faire face à l'inconnu
|
|||
|
###############################################################################
|
|||
|
|
|||
|
if niveau==4:
|
|||
|
def_murs=[]
|
|||
|
rp_marquer_objectif (10,10)
|
|||
|
obj['x_init'] = random.randint(1,10)
|
|||
|
obj['y_init'] = random.randint(1,10)
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Mission 5 : Se rendre utile
|
|||
|
###############################################################################
|
|||
|
|
|||
|
if niveau==5:
|
|||
|
for i in range (10):
|
|||
|
rp_marquer_objectif (random.randint(1,10),random.randint(1,10)) # Position aléatoire des objectifs
|
|||
|
def_murs=[]
|
|||
|
obj['x_init'] = random.randint(1,10)
|
|||
|
obj['y_init'] = random.randint(1,10)
|
|||
|
|
|||
|
###############################################################################
|
|||
|
# Position initiale du robot
|
|||
|
###############################################################################
|
|||
|
|
|||
|
rp_init_position()
|
|||
|
# rp_orientation("est") # il y a nord, sud, est, ouest
|
|||
|
obj['mvts'] = "" # Liste des mouvements
|
|||
|
obj['mvt_i'] = 0 # Liste des mouvements
|
|||
|
# obj.visible=False
|
|||
|
|