2022-02-24 11:48:12 +01:00
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>
2022-04-21 14:06:16 +02:00
# @copyright: Copyright (C) 2020-2022 Philippe Roy
2022-02-24 11:48:12 +01:00
# @license: GNU GPL
#
# Initialisation du Robot
#
# Ropy est destiné à la découverte de la programmation procédurale et du language Python.
2022-04-21 14:06:16 +02:00
# A travers plusieurs challenges, donc de manière graduée, les élèves vont apprendre à manipuler les structures algorithmiques de base et à les coder en Python.
2022-02-24 11:48:12 +01:00
#
###############################################################################
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