Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| FORT LABYRINTH | |
| | |
Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: FORT LABYRINTH Dim 25 Déc 2011 - 0:25 | |
| Bonjour à tous les Panoramiciens et Joyeux NOËL, Comme cadeau de NOËL, je vous dévoile le source sur lequel je travaille pour le moment et qui me donne énormément de fil à retordre. Vous reconnaitrez certainement le labyrinthe et le chateau en 3d (voir les sujets post précédents).Ce n'est pas terminé, il me reste plein de choses à coder. Les bruitages de portes (ouverture et fermeture) les bruitages à la sortie du labyrinthe, règler les volumes de ces bruitages, coder au moins un monstre et en extraire toutes les frames, et gèrer ses déplacements. Donc, dans le menu au début du jeu, l'option monstre est inopérante. C'est jouable pour l'instant, mais le problème que je rencontre principalement, c'est que le héros se déplace plus vite dans certaines directions et plus lentement dans d'autres. Je pense que c'est principalement dû au nombre total d'objet 3d que la carte graphique a à gérer. Au début, le chargement est un peu long et le sera certainement encore plus par la suite, appuyez sur n'importe quelle touche pour accèder au menu des options, puis règlez ces options avec les 4 flèches du clavier et validez le tout avec la touche enter. Laissez l'intro se dérouler, et dès que la boussole apparaîtra, vous pourrez diriger le personnage dans les dédales du labyrinthe. Au point de vue de la structure du programme, elle est semblable à celle utilisée dans les programmes du post "Labyrinth". Par contre, j'ai modifié le mode de construction des murs en essayant de faire un algorythme qui empèche d'avoir des doublons. En effet, la plupart des salles, avant avait au moins 1 ou 2 murs en commun avec une autre. J'ai pu diminuer ainsi d'environ 1/3 le nombre d'objet. Mais je crois qu'on peut faire mieux. Il faut que j'y réfléchisse encore pour voir si on ne peut pas simplifier. Il se peut que se soit plus rapide sur certaine machine et plus lent sur d'autres. A vous d'essayer de règler les paramêtres des variables. Il arrive parfois qu'une fois toute l'intro passée, au moment où le jeu doit démarrer, l'écran se fige. Fermez avec la croix en haut à droite et relancer le programme. Ce doit être à cause du timer de l'intro que je n'arrive pas à règler. La texture du modèle du héros s'applique très mal à l'arrière et il ne me plait guère. C'est plus difficile de trouver des bons que des méchants sur internet. Des méchants, des monstres, des vilains, des pas beau, j'en ai plein! Quand j'ai extrait les frames de mon héros, je lui ai enlevé le bouclier, parce que je le veux sans bouclier dans un premier temps, puis j'extraierai à nouveau toutes les frames avec le bouclier et enfin je lui adjoindrai les frames de l'épée. Donc vous l'avez compris, j'ai l'intention de coder un combat avec le méchant si ils se retrouvent face à face. Mais ça, c'est une autre histoire! - Code:
-
' ****************************************************************************** ' ****************************************************************************** ' ************************ FORT LABYRINTH version 1.13 ************************* ' ********************** CRÉÉ PAR bignono le 25/12/2011 ************************ ' **************************** EN BASIC PANORAMIC ****************************** ' ****************************************************************************** ' ****************************************************************************** ' ********************* 2ème partie de mon jeu d'aventure ********************** ' ****************************************************************************** ' ****************************************************************************** ' ******************************************************************************
dim c_espace,tch,tpm1,tpm2,opt(4),c(4) dim ang,av,b,bs,d,dtn,gd,hrs,h,i,j,k,m,n,pas,pasv,pk,r,s,v,prt,pt,rot,w,x,y,z dim chemin$,txt1$,txt2$,txt3$,txt4$,txt5$,txt6$,txt7$,titre1$,titre2$,titre3$ label affiche,droite,gauche,herodtn,intro,lab,moteur,music,pan1,pan2,pan4,pan8 label pivot,pospk,pxz,quit,r1,r2,r3,r4,r5,r6,r7,sortie,fin,trace chemin$ ="c:\FORTLAB\" titre1$="Bignono présente":titre2$="* * * F O R T - L A B Y R I N T H * * *" titre3$="Programme et musique de Bignono" txt1$="Patientez, chargement en cours...":txt2$="Construction de la forteresse..." txt3$="Création du héros...":txt4$="Création du monstre...": ' Création du monstre n°1 n°2 n°3 txt5$="Génération du labyrinthe...":txt6$=" Création des murs dans la salle " txt7$="Initialisation du programme..."
sound 20:file_load 20,chemin$+"cours1.mp3" sound 21:file_load 21,chemin$+"cours2.mp3" sound 22:file_load 22,chemin$+"hersebaisser.mp3" sound 23:file_load 23,chemin$+"herselever.mp3" sound 24:file_load 24,chemin$+"pontlevisfermer.mp3" sound 25:file_load 25,chemin$+"pontlevisbaisser3.mp3" sound 26:file_load 26,chemin$+"chargement.mp3":play 26 sound 27:file_load 27,chemin$+"mus1.mp3" sound 28:file_load 28,chemin$+"mus2.mp3" sound 29:file_load 29,chemin$+"mus3.mp3" sound 30:file_load 30,chemin$+"mus4.mp3"
' ****************************************************************************** ' ************************ INITIALISATION DES VARIABLES ************************ ' ****************************************************************************** ' ************ h et v représentent les dimensions du labyrinthe **************** ' ****** pas : sert à règler la vitesse de déplacement dans le labyrinthe ****** ' ****** pasv: sert à règler la vitesse du zoom vertical *********************** h=21:v=20:n=h*v-1:h=h+1:v=v+1:d=1:w=13:pas=0.5:pasv=10:c_espace=0 dim a(h+1,v+1),mur(h+1,v+1),trc(h,v) gosub lab
label dbug DIM debug : debug =1 IF Debug =1 FORM 500 : WIDTH 500, 150 : HEIGHT 500, 200 : TOP 500, 3 : LEFT 500, 3 ALPHA 501 : PARENT 501, 500 : HEIGHT 501, 15 : TOP 501, 3 : LEFT 501, 3 ALPHA 502 : PARENT 502, 500 : HEIGHT 502, 15 : TOP 502, 20 : LEFT 502, 3 ALPHA 503 : PARENT 503, 500 : HEIGHT 503, 15 : TOP 503, 37 : LEFT 503, 3 ALPHA 504 : PARENT 504, 500 : HEIGHT 504, 15 : TOP 504, 54 : LEFT 504, 3 ALPHA 505 : PARENT 505, 500 : HEIGHT 505, 15 : TOP 505, 71 : LEFT 505, 3 ALPHA 506 : PARENT 506, 500 : HEIGHT 506, 15 : TOP 506, 88 : LEFT 506, 3 ALPHA 507 : PARENT 507, 500 : HEIGHT 507, 15 : TOP 507, 105 : LEFT 507, 3 ALPHA 508 : PARENT 508, 500 : HEIGHT 508, 15 : TOP 508, 122 : LEFT 508, 3 ALPHA 509 : PARENT 509, 500 : HEIGHT 509, 15 : TOP 509, 139 : LEFT 509, 3 END_IF
full_space 0:color 0,0,0,0:' border_hide 0
font_name 0,"Times New Roman":font_size 0,50:font_bold 0:font_color 0,255,0,0 print_locate screen_x/2-(text_width(titre1$,0)/2),screen_y/2-12*(text_height(titre1$,0)/2):print titre1$:wait 1000 print_locate screen_x/2-(text_width(titre2$,0)/2),screen_y/2-10*(text_height(titre2$,0)/2):print titre2$:wait 1000 print_locate screen_x/2-(text_width(titre3$,0)/2),screen_y/2-8*(text_height(titre3$,0)/2):print titre3$:wait 1000 print_locate screen_x/2-(text_width(txt1$,0)/2),screen_y/2-5*(text_height(txt1$,0)/2):print txt1$:wait 1000
scene3d 1:3d_target_is 1:hide 1:full_space 1:light_position 0,1500,0:3d_skybox 1 3d_load_texture_right 1,chemin$+"sk1.bmp" 3d_load_texture_back 1,chemin$+"sk2.bmp" 3d_load_texture_top 1,chemin$+"sk3.bmp" 3d_load_texture_left 1,chemin$+"sk4.bmp" 3d_load_texture_front 1,chemin$+"sk5.bmp" 3d_load_texture_bottom 1,chemin$+"sk6.bmp" 3d_plane 2:3d_scale 2,1000,1000,1:3d_x_rotate 2,90:3d_y_position 2,-0.25 3d_load_texture 2,chemin$+"herbe.JPG":3d_u_tile 2,400:3d_v_tile 2,400 3d_plane 3:3d_scale 3,42,40,1:3d_x_rotate 3,90:3d_position 3,240,0,230 3d_load_texture 3,chemin$+"terre.jpg":3d_u_tile 3,10:3d_v_tile 3,10
3d_cube 4,1:3d_hide 4:3d_mesh 5:3d_hide 5: ' CRÉATION DES VÉHICULES MOTEUR ET CAMÉRA gosub dbug ' ****************************************************************************** ' **************** CONSTRUCTION DE LA FORTERESSE ************************ ' ****************************************************************************** print_locate screen_x/2-(text_width(txt2$,0)/2),screen_y/2-3*(text_height(txt2$,0)/2):print txt2$ ' LES 8 TOURS 3d_mesh 6:3d_load_object 6,chemin$+"tr.3ds":3d_load_texture 6,chemin$+"tr.jpg" 3d_position 6,240,0,230:3d_scale 6,42,44,32:3d_x_rotate 6,90:3d_z_rotate 6,180 3d_mesh 7:3d_load_object 7,chemin$+"gués.3ds":3d_load_texture 7,chemin$+"gués.bmp" 3d_position 7,240,0,230:3d_scale 7,42,44,32:3d_x_rotate 7,90:3d_z_rotate 7,180 ' les remparts latéraux à l'entrée 3d_box 8,42,72,20:3d_position 8,200,36,-33:3d_y_rotate 8,90:3d_load_texture 8,chemin$+"m1r.jpg" 3d_box 9,42,72,20:3d_position 9,288,36,-33:3d_y_rotate 9,90:3d_load_texture 9,chemin$+"m1r.jpg" ' les blocs remparts aux entrées et à la sortie 3d_box 10,22,72,20:3d_position 10,220,36,-80:3d_load_texture 10,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 11,22,72,20:3d_position 11,260,36,-80:3d_load_texture 11,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 12,21,24,20:3d_position 12,240,60,-80:3d_load_texture 12,chemin$+"m8.jpg": ' bloc au-dessus pont levis et portes entrée 3d_box 13,21,24,20:3d_position 13,240,60,20:3d_load_texture 13,chemin$+"m8.jpg" : ' bloc au-dessus herse 3d_box 14,21,24,20:3d_position 14,240,60,440:3d_load_texture 14,chemin$+"m8.jpg": ' bloc au-dessus portes sortie ' LA HERSE A L'ENTRÉE 3d_mesh 15:3d_position 15,240,-1,13:3d_x_rotate 15,90:3d_scale 15,1,1,1.15 3d_load_object 15,chemin$+"herse.3ds":3d_load_texture 15,chemin$+"herse.bmp" ' LE PONT-LEVIS A L'ENTRÉE 3d_mesh 16:3d_position 16,240,0,-90:3d_x_rotate 16,90:3d_scale 16,1,1,1.1 3d_load_object 16,chemin$+"pntlvs.3ds":3d_load_texture 16,chemin$+"pntlvs.jpg" ' LES PORTES D'ENTRÉE 3d_mesh 17:3d_position 17,227,0,-70:3d_x_rotate 17,90:3d_scale 17,1,1,1.1 3d_load_object 17,chemin$+"porte.3ds":3d_load_texture 17,chemin$+"porte.jpg" 3d_mesh 18:3d_position 18,252,0,-70:3d_x_rotate 18,90:3d_z_rotate 18,180:3d_scale 18,1,1,1.1 3d_load_object 18,chemin$+"porte.3ds":3d_load_texture 18,chemin$+"porte.jpg" ' LES PORTES DE SORTIE 3d_mesh 19:3d_position 19,230,0,442:3d_x_rotate 19,90:3d_scale 19,0.78,0.75,1.1 3d_load_object 19,chemin$+"porte.3ds":3d_load_texture 19,chemin$+"porte.jpg" 3d_mesh 20:3d_position 20,249,0,442:3d_x_rotate 20,90:3d_z_rotate 20,180:3d_scale 20,0.78,0.75,1.1 3d_load_object 20,chemin$+"porte.3ds":3d_load_texture 20,chemin$+"porte.jpg" ' LE PONT-LEVIS A LA SORTIE 3d_mesh 21:3d_position 21,240,0,450:3d_x_rotate 21,90:3d_scale 21,1,1,1.1 3d_load_object 21,chemin$+"pntlvs.3ds": 3d_load_texture 21,chemin$+"pntlvs.jpg" ' LA HERSE A LA SORTIE 3d_mesh 22:3d_position 22,240,-1,446:3d_x_rotate 22,90:3d_scale 22,1,1,1.15 3d_load_object 22,chemin$+"herse.3ds": 3d_load_texture 22,chemin$+"herse.bmp" ' TEXTE 3D LABYRINTH 3d_mesh 23:3d_load_object 23,chemin$+"Labyrinth.3ds":3d_load_texture 23,chemin$+"3d_L1.jpg" 3d_position 23,240,30,-250:3d_x_rotate 23,90:3d_scale 23,30,30,30:3d_z_rotate 23,180:3d_hide 23 ' TEXTE 3D FORT 3d_mesh 24:3d_load_object 24,chemin$+"Fort.3ds":3d_load_texture 24,chemin$+"3d_L1.jpg" 3d_position 24,240,30,-250:3d_x_rotate 24,90:3d_scale 24,30,30,30:3d_z_rotate 24,180:3d_hide 24 ' LE MENU OPTION EN LETTRES 3D AVEC TEXTURES 3d_mesh 25:3d_load_object 25,chemin$+"opt1_oui.3ds":3d_position 25,240,60,-225 3d_mesh 26:3d_load_object 26,chemin$+"opt1_non.3ds":3d_position 26,240,60,-225 3d_mesh 27:3d_load_object 27,chemin$+"opt2_oui.3ds":3d_position 27,240,50,-225 3d_mesh 28:3d_load_object 28,chemin$+"opt2_non.3ds":3d_position 28,240,50,-225 3d_mesh 29:3d_load_object 29,chemin$+"opt3_oui.3ds":3d_position 29,240,40,-225 3d_mesh 30:3d_load_object 30,chemin$+"opt3_non.3ds":3d_position 30,240,40,-225 3d_mesh 31:3d_load_object 31,chemin$+"opt4_oui.3ds":3d_position 31,240,30,-225 3d_mesh 32:3d_load_object 32,chemin$+"opt4_non.3ds":3d_position 32,240,30,-225 for b=25 to 32:3d_load_texture b,chemin$+"3d_L3.jpg":3d_x_rotate b,90 3d_scale b,5,5,5:3d_z_rotate b,180:3d_hide b:next b
print_locate screen_x/2-(text_width(txt3$,0)/2),screen_y/2-1*(text_height(txt3$,0)/2):print txt3$ ' CRÉATION DU HÉROS 3d_mesh 33:3d_load_object 33,chemin$+"pk001.3ds" 3d_mesh 34:3d_load_object 34,chemin$+"pk002.3ds" 3d_mesh 35:3d_load_object 35,chemin$+"pk003.3ds" 3d_mesh 36:3d_load_object 36,chemin$+"pk004.3ds" 3d_mesh 37:3d_load_object 37,chemin$+"pk005.3ds" 3d_mesh 38:3d_load_object 38,chemin$+"pk006.3ds" 3d_mesh 39:3d_load_object 39,chemin$+"pk007.3ds" 3d_mesh 40:3d_load_object 40,chemin$+"pk008.3ds" 3d_mesh 41:3d_load_object 41,chemin$+"pk009.3ds" 3d_mesh 42:3d_load_object 42,chemin$+"pk010.3ds" 3d_mesh 43:3d_load_object 43,chemin$+"pk011.3ds" 3d_mesh 44:3d_load_object 44,chemin$+"pk012.3ds" 3d_mesh 45:3d_load_object 45,chemin$+"pk013.3ds" 3d_mesh 46:3d_load_object 46,chemin$+"pk014.3ds" 3d_mesh 47:3d_load_object 47,chemin$+"pk015.3ds" 3d_mesh 48:3d_load_object 48,chemin$+"pk016.3ds" 3d_mesh 49:3d_load_object 49,chemin$+"pk017.3ds" 3d_mesh 50:3d_load_object 50,chemin$+"pk018.3ds" 3d_mesh 51:3d_load_object 51,chemin$+"pk019.3ds" 3d_mesh 52:3d_load_object 52,chemin$+"pk020.3ds" 3d_mesh 53:3d_load_object 53,chemin$+"pk021.3ds" 3d_mesh 54:3d_load_object 54,chemin$+"pk022.3ds" 3d_mesh 55:3d_load_object 55,chemin$+"pk023.3ds" 3d_mesh 56:3d_load_object 56,chemin$+"pk024.3ds" 3d_mesh 57:3d_load_object 57,chemin$+"pk025.3ds" 3d_mesh 58:3d_load_object 58,chemin$+"pk026.3ds" 3d_mesh 59:3d_load_object 59,chemin$+"pk027.3ds" 3d_mesh 60:3d_load_object 60,chemin$+"pk028.3ds" 3d_mesh 61:3d_load_object 61,chemin$+"pk029.3ds" 3d_mesh 62:3d_load_object 62,chemin$+"pk030.3ds" 3d_mesh 63:3d_load_object 63,chemin$+"pk031.3ds" 3d_mesh 64:3d_load_object 64,chemin$+"pk032.3ds" 3d_mesh 65:3d_load_object 65,chemin$+"pk033.3ds" 3d_mesh 66:3d_load_object 66,chemin$+"pk034.3ds" 3d_mesh 67:3d_load_object 67,chemin$+"pk035.3ds" 3d_mesh 68:3d_load_object 68,chemin$+"pk036.3ds" 3d_mesh 69:3d_load_object 69,chemin$+"pk037.3ds" 3d_mesh 70:3d_load_object 70,chemin$+"pk038.3ds" 3d_mesh 71:3d_load_object 71,chemin$+"pk039.3ds" 3d_mesh 72:3d_load_object 72,chemin$+"pk040.3ds" 3d_mesh 73:3d_load_object 73,chemin$+"pk041.3ds" 3d_mesh 74:3d_load_object 74,chemin$+"pk042.3ds" 3d_mesh 75:3d_load_object 75,chemin$+"pk043.3ds" 3d_mesh 76:3d_load_object 76,chemin$+"pk044.3ds" 3d_mesh 77:3d_load_object 77,chemin$+"pk045.3ds" 3d_mesh 78:3d_load_object 78,chemin$+"pk046.3ds" 3d_mesh 79:3d_load_object 79,chemin$+"pk047.3ds" 3d_mesh 80:3d_load_object 80,chemin$+"pk048.3ds" 3d_mesh 81:3d_load_object 81,chemin$+"pk049.3ds" 3d_mesh 82:3d_load_object 82,chemin$+"pk050.3ds" 3d_mesh 83:3d_load_object 83,chemin$+"pk051.3ds" 3d_mesh 84:3d_load_object 84,chemin$+"pk052.3ds" 3d_mesh 85:3d_load_object 85,chemin$+"pk053.3ds" 3d_mesh 86:3d_load_object 86,chemin$+"pk054.3ds" 3d_mesh 87:3d_load_object 87,chemin$+"pk055.3ds" 3d_mesh 88:3d_load_object 88,chemin$+"pk056.3ds" 3d_mesh 89:3d_load_object 89,chemin$+"pk057.3ds" 3d_mesh 90:3d_load_object 90,chemin$+"pk058.3ds" 3d_mesh 91:3d_load_object 91,chemin$+"pk059.3ds" 3d_mesh 92:3d_load_object 92,chemin$+"pk060.3ds" 3d_mesh 93:3d_load_object 93,chemin$+"pk061.3ds" 3d_mesh 94:3d_load_object 94,chemin$+"pk062.3ds" 3d_mesh 95:3d_load_object 95,chemin$+"pk063.3ds" 3d_mesh 96:3d_load_object 96,chemin$+"pk064.3ds" 3d_mesh 97:3d_load_object 97,chemin$+"pk065.3ds" 3d_mesh 98:3d_load_object 98,chemin$+"pk066.3ds" 3d_mesh 99:3d_load_object 99,chemin$+"pk067.3ds" 3d_mesh 100:3d_load_object 100,chemin$+"pk068.3ds" 3d_mesh 101:3d_load_object 101,chemin$+"pk069.3ds" 3d_mesh 102:3d_load_object 102,chemin$+"pk070.3ds" 3d_mesh 103:3d_load_object 103,chemin$+"pk071.3ds" 3d_mesh 104:3d_load_object 104,chemin$+"pk072.3ds" 3d_mesh 105:3d_load_object 105,chemin$+"pk073.3ds" 3d_mesh 106:3d_load_object 106,chemin$+"pk074.3ds" 3d_mesh 107:3d_load_object 107,chemin$+"pk075.3ds" 3d_mesh 108:3d_load_object 108,chemin$+"pk076.3ds" 3d_mesh 109:3d_load_object 109,chemin$+"pk077.3ds" 3d_mesh 110:3d_load_object 110,chemin$+"pk078.3ds" 3d_mesh 111:3d_load_object 111,chemin$+"pk079.3ds" 3d_mesh 112:3d_load_object 112,chemin$+"pk080.3ds" 3d_mesh 113:3d_load_object 113,chemin$+"pk081.3ds" 3d_mesh 114:3d_load_object 114,chemin$+"pk082.3ds" 3d_mesh 115:3d_load_object 115,chemin$+"pk083.3ds" 3d_mesh 116:3d_load_object 116,chemin$+"pk084.3ds" 3d_mesh 117:3d_load_object 117,chemin$+"pk085.3ds" 3d_mesh 118:3d_load_object 118,chemin$+"pk086.3ds" 3d_mesh 119:3d_load_object 119,chemin$+"pk087.3ds" 3d_mesh 120:3d_load_object 120,chemin$+"pk088.3ds" 3d_mesh 121:3d_load_object 121,chemin$+"pk089.3ds" 3d_mesh 122:3d_load_object 122,chemin$+"pk090.3ds" 3d_mesh 123:3d_load_object 123,chemin$+"pk091.3ds" 3d_mesh 124:3d_load_object 124,chemin$+"pk092.3ds" 3d_mesh 125:3d_load_object 125,chemin$+"pk093.3ds" 3d_mesh 126:3d_load_object 126,chemin$+"pk094.3ds" 3d_mesh 127:3d_load_object 127,chemin$+"pk095.3ds" 3d_mesh 128:3d_load_object 128,chemin$+"pk096.3ds" 3d_mesh 129:3d_load_object 129,chemin$+"pk097.3ds" 3d_mesh 130:3d_load_object 130,chemin$+"pk098.3ds" 3d_mesh 131:3d_load_object 131,chemin$+"pk099.3ds" 3d_mesh 132:3d_load_object 132,chemin$+"pk100.3ds" 3d_mesh 133:3d_load_object 133,chemin$+"pk101.3ds" 3d_mesh 134:3d_load_object 134,chemin$+"pk102.3ds" 3d_mesh 135:3d_load_object 135,chemin$+"pk103.3ds" 3d_mesh 136:3d_load_object 136,chemin$+"pk104.3ds" 3d_mesh 137:3d_load_object 137,chemin$+"pk105.3ds" 3d_mesh 138:3d_load_object 138,chemin$+"pk106.3ds" 3d_mesh 139:3d_load_object 139,chemin$+"pk107.3ds" 3d_mesh 140:3d_load_object 140,chemin$+"pk108.3ds" 3d_mesh 141:3d_load_object 141,chemin$+"pk109.3ds" 3d_mesh 142:3d_load_object 142,chemin$+"pk110.3ds" 3d_mesh 143:3d_load_object 143,chemin$+"pk111.3ds" 3d_mesh 144:3d_load_object 144,chemin$+"pk112.3ds" 3d_mesh 145:3d_load_object 145,chemin$+"pk113.3ds" 3d_mesh 146:3d_load_object 146,chemin$+"pk114.3ds" pk=32 repeat pk=pk+1:3d_load_texture pk,chemin$+"pk.bmp":3d_scale pk,0.25,0.25,0.25 3d_x_rotate pk,90:3d_z_rotate pk,270:3d_hide pk:3d_position pk,240,7,-290 until pk>=146:pk=33
' GARGOYLES 3d_mesh 147:3d_load_object 147,chemin$+"gargoyle.3ds" 3d_scale 147,0.75,0.75,0.75:3d_x_rotate 147,90:3d_y_rotate 147,30 3d_position 147,232,18,20:3d_color 147,0,50,40 3d_mesh 148:3d_load_object 148,chemin$+"gargoyle.3ds" 3d_scale 148,0.75,0.75,0.75 3d_x_rotate 148,90:3d_y_rotate 148,330:3d_z_rotate 148,180 3d_position 148,248,18,20:3d_color 148,0,50,40 ' DRAGONS 3d_box 149,20,5,40:3d_position 149,220,0,-30:3d_load_texture 149,chemin$+"3d_L4.jpg": ' piedestal marbre droit 3d_box 150,20,5,40:3d_position 150,268,0,-30:3d_load_texture 150,chemin$+"3d_L4.jpg": ' piedestal marbre gauche ' dragon 1 droit 3d_mesh 151:3d_load_object 151,chemin$+"dragdroit.3ds":3d_color 151,0,25,15 3d_scale 151,40,40,40:3d_y_rotate 151,150 3d_x_rotate 151,90:3d_position 151,218,2,-30 ' dragon 2 gauche 3d_mesh 152:3d_load_object 152,chemin$+"dragauche.3ds":3d_color 152,0,25,15 3d_scale 152,40,40,40:3d_y_rotate 152,210 3d_x_rotate 152,90:3d_position 152,272,2,-30
' ****************************************************************************** ' **************** CONSTRUCTION DU LABYRINTHE ************************ ' ****************************************************************************** ' CAS 1 = MUR GAUCHE, CAS 2 = MUR ARRIÈRE, CAS 4 = MUR DROIT, CAS 8 = MUR FACE ' LES AUTRES CAS, C'EST UNE ADDITION; EX: CAS 3 = CAS 1 + CAS 2 print_locate screen_x/2-(text_width(txt5$,0)/2),screen_y/2+3*(text_height(txt5$,0)/2):print txt5$ for i=1 to h:a(i,1)=8:next i:for j=1 to v:a(1,j)=1:next j for j=2 to v for i=2 to h: trc(i,j)=0 if (i=(int(h/2)+1) and j=2) then a(i,j)=a(i,j)-8 if (i=(int(h/2)+1) and j=v) then a(i,j)=a(i,j)-2 txt6$=left$(txt6$,33)+str$(i*j)+"..." print_locate screen_x/2-(text_width(txt6$,0)/2),screen_y/2+5*(text_height(txt6$,0)/2):print txt6$
select a(i,j) case 1 gosub pan1 case 2 gosub pan2 case 3 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 case 4 gosub pan4 case 5 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 case 6 gosub pan2:gosub pan4 case 7 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2:gosub pan4 case 8 gosub pan8 case 9 if a(i-1,j)<4 or a(i-1,j)>7 and a(i-1,j)<12 then gosub pan1 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 10 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 11 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 12 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 13 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 14 gosub pan2:gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 end_select next i next j
gosub dbug print_locate screen_x/2-text_width(txt7$,0)/2,screen_y/2+7*text_height(txt7$,0)/2:print txt7$
' ****************************************************************************** ' ****************** CRÉATION DE LA BOUSSOLE ************************ ' ****************************************************************************** scene3d 2:3d_target_is 2:hide 2:width 2,160:height 2,160 left 2,screen_x-180:top 2,screen_y-240:color 2,0,0,0 3d_cylinder number_3d_objects+1,0.25,1,1 3d_load_texture number_3d_objects,chemin$+"étui.jpg" 3d_x_rotate number_3d_objects,90 3d_cylinder number_3d_objects+1,0.26,0.9,0.9 3d_load_texture number_3d_objects,chemin$+"cadran.jpg" 3d_x_rotate number_3d_objects,270 3d_mesh number_3d_objects+1 3d_load_object number_3d_objects,chemin$+"aiguille.3ds" 3d_load_texture number_3d_objects,chemin$+"aiguille.bmp" 3d_x_rotate number_3d_objects,270:3d_y_rotate number_3d_objects,180 bs=number_3d_objects 3d_target_is 1
' ****************************************************************************** ' ** Initialisation position départ et création d'1 timer pour l'intro du jeu ** ' ** Création d'1 second timer pour gèrer les déplacements dans le labyrinthe ** ' ****************************************************************************** i=int(h/2)+1:j=1:dtn=1
' ! INFO: en dessous de 17 le timer_interval 3 est inopérant & le prog ralenti ! timer 3:timer_interval 3,200:on_timer 3,intro timer 4:timer_interval 4,1:on_timer 4,moteur show 1 end
' ****************************************************************************** ' ***************** LE PROGRAMME PRINCIPAL ****************************** ' ****************************************************************************** moteur:
timer_off 4
gosub dbug
if m<>0 gosub music if tpm2-tpm1>60 then tpm1=tpm2:m=m+1:play m:if m>29 then m=26 end_if
if c_espace=1 and opt(2)=27 then gosub trace timer_on 4:tch=scancode:timer_off 4 select tch case 0: ' LE HÉROS EN MOUVEMENT RESTE EN POSITION STATIQUE 3d_hide pk:pk=pk+1:if pk>130 then pk=33 3d_position pk,x,7,z:3d_show pk case 27:gosub fin: ' SORTIE PROGRAMME case 32:c_espace=1: ' AFFICHAGE DU PLAN DU LABYRINTHE case 37:gosub gauche: ' FLECHE GAUCHE = ROTATION A GAUCHE case 39:gosub droite: ' FLECHE DROITE = ROTATION A DROITE case 38: ' FLECHE HAUT = DTN DEFINIT LA DIRECTION NORD, OUEST, SUD OU EST 3d_hide pk:pk=131:3d_show pk select dtn case 1 if j < v+1 if a(i,j)=0 or a(i,j)=1 or a(i,j)=4 or a(i,j)=5 or a(i,j)=8 or a(i,j)=9 or a(i,j)=12 or a(i,j)=13 pt=j*20:j=j+1:gd=j*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 2 if i < h and j > 1 if a(i,j)<4 or a(i,j)>7 and a(i,j)<12 pt=i*20:i=i+1:gd=i*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 3 if j > 2 if a(i,j)<8 pt=j*20:j=j-1:gd=j*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if case 4 if i > 2 and j > 1 if odd(a(i,j))=0 pt=i*20:i=i-1:gd=i*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if end_select end_select
' MÉMORISATION DE SON PASSAGE PAR DES SPHÈRES ORANGES ==> OPTION PETIT POUCET if opt(1)=25 if trc(i,j)=0 and j>1 3d_sphere number_3d_objects+1,2 3d_position number_3d_objects,i*20,1,j*20 3d_color number_3d_objects,224,128,32 trc(i,j)=number_3d_objects end_if end_if
' ROTATION DU HÉROS DANS LE SENS DU DÉPLACEMENT gosub herodtn
' TEST DE SORTIE DU LABYRINTHE if j=v and i=(int(h/2)+1) and dtn=1 then goto sortie
timer_on 4
return
' ****************************************************************************** ' ********************* LES ROUTINES *********************************** ' ******************************************************************************
' CALCUL DES POSITIONS DES VÉHICULES MOTEUR ET CAMÉRA affiche: 3d_position 5,o3d_x_position(4),o3d_y_position(4),o3d_z_position(4):3d_rotate 5,o3d_x_rotate(4),o3d_y_rotate(4),o3d_z_rotate(4) 3d_move 5,1:cam_position o3d_x_position(4),w,o3d_z_position(4):point_position o3d_x_position(5),13,o3d_z_position(5) return
' CRÉATION DES MURS DU LABYRINTHE pan1: if i=2 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)-20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan2: if j=v 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)+20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)+10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return pan4: if i=h 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)+20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)+10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan8: if j=2 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)-20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)-10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return
' VISION SATELLITE DU LABYRINTHE EN 3D trace: repeat w=w+pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w>=600
repeat if scancode=27 then gosub fin if scancode=37 then gosub gauche if scancode=39 then gosub droite until scancode=32
repeat w=w-pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w<=13 c_espace=0 return
' ROTATION A GAUCHE gauche: ang=rot+90:dtn=dtn+1:if dtn>4 then dtn=1 repeat rot=rot+6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot>=ang return
' ROTATION A DROITE droite: ang=rot-90:dtn=dtn-1:if dtn<1 then dtn=4 repeat rot=rot-6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot<=ang return
' ROTATION DE LA CAMÉRA LORS DE LA VISION SATELLITE pivot: cam_position o3d_x_position(4),o3d_y_position(4)+w,o3d_z_position(4) return ' ROUTINES DE RECHERCHE DES POSITIONS X ET Z DU HÉROS pospk: 3d_hide pk:pk=pk+1:if pk>146 then pk=131 if pk=138 then play 20 if pk=146 then play 21 gosub herodtn 3d_position pk,x,7,z:3d_show pk return herodtn: if dtn=1 then x=o3d_x_position(4):z=o3d_z_position(4)+5:3d_z_rotate pk,270 if dtn=2 then x=o3d_x_position(4)+5:z=o3d_z_position(4):3d_z_rotate pk,0 if dtn=3 then x=o3d_x_position(4):z=o3d_z_position(4)-5:3d_z_rotate pk,90 if dtn=4 then x=o3d_x_position(4)-5:z=o3d_z_position(4):3d_z_rotate pk,180 return pxz: x=o3d_x_position(pk):z=o3d_z_position(pk) return
' GÉNÉRATION DU LABYRINTHE lab:
for j=1 to v+1:a(1,j)=4:a(h+1,j)=1:next j for i=2 to h:a(i,v+1)=8:a(i,1)=2:for j=2 to v:a(i,j)=15:next j:next i r=int(h/2+1):s=int(v/2+1):a(r,s)=15 for k=1 to n r1: i=0 if a(r-1,s)=15 then i=i+1 :c(i)=1 if a(r,s-1)=15 then i=i+1 :c(i)=2 if a(r+1,s)=15 then i=i+1 :c(i)=3 if a(r,s+1)=15 then i=i+1 :c(i)=4 if i=0 then goto r2 if i<>1 then i=int(rnd(i)+1) select c(i) case 1 :a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2):r=r-1:a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4 case 2 :a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8:s=s-1:a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2 case 3 :a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4:r=r+1:a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2) case 4 :a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2:s=s+1:a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8 end_select goto r7 r2: if d=-1 then goto r3 if r<>h then goto r5 if s<>v then goto r4 r=2:s=2:goto r6 r3: if r<>2 then goto r5 if s<>v then goto r4 r=h:s=2: goto r6 r4: s=s+1:d=-1*d:goto r6 r5: r=r+d r6: if a(r,s)=15 then goto r2 goto r1 r7: mur(r,s)=int(rnd(6)+1) if mur(r,s)=mur(r-1,s) or mur(r,s)=mur(r+1,s) or mur(r,s)=mur(r,s-1) or mur(r,s)=mur(r,s+1) then goto r7 next k return
' GESTION DE LA MUSIQUE music: tpm2=(val(left$(time$,2))*3600)+(val(mid$(time$,4,2))*60)+val(right$(time$,2)) return
' ****************************************************************************** ' ****************************************************************************** ' ******************* routine de DEBUGAGE ************************************** ' ****************************************************************************** ' ****************************************************************************** dbug: IF debug =1 CAPTION 501, "number_3d_objects=" + STR$(number_3d_objects) CAPTION 502, "pk=" + STR$(pk) CAPTION 503, "number_objects=" + STR$(number_objects) ' caption 504, "z=" + str$(z) caption 505, "dtn=" + str$(dtn) caption 506, "a(i,j)=" + str$(a(i,j)) caption 507, "a(i,v)=" + str$(a(i,v)) caption 508, "i=" + str$(i) caption 509, "j=" + str$(j) END_IF return
' ****************************************************************************** ' DÉBUT DU JEU --> NOM DU JEU, RÈGLAGE OPTIONS & ENTRÉE DANS LABYRINTHE ' ****************************************************************************** intro: timer_off_all av=180:hrs=-1:prt=360:pk=33:m=26 3d_position 4,((h/2)*20)-(3*odd(h))+20,15,-300:3d_show 23:3d_show 24:3d_show 33 gosub affiche file_load 26,chemin$+"FORT LABYRINTH.mp3":gosub music:tpm1=tpm2:play 26 ' LE NOM DU JEU EN PIERRE TOURNOIE ET LE HÉROS EN MOUVEMENT RESTE STATIQUE while scancode=0 3d_z_rotate 23,av:3d_z_rotate 24,abs(av):av=av-4 3d_hide pk:gosub pxz:pk=pk+1:if pk>=130 then pk=33 3d_position pk,x,7,z:3d_show pk gosub music:if tpm2-tpm1>62 then tpm1=tpm2:play 26 end_while 3d_hide 23:3d_hide 24:av=0 file_load 26,chemin$+"menu.mp3":gosub music:tpm1=tpm2:play 26 ' AFFICHAGE DES OPTIONS DU JEU SOUS FORME DE MENU, LE HÉROS TOUJOURS STATIQUE opt(1)=25:opt(2)=27:opt(3)=30:opt(4)=31:for b=1 to 4:3d_show opt(b):next b:b=1 repeat 3d_hide pk:gosub pxz:pk=pk+1:if pk>=130 then pk=33 3d_position pk,x,7,z:3d_show pk if scancode=27 then gosub fin if scancode=37 or scancode=39 3d_hide opt(b) if even(opt(b))=1 opt(b)=opt(b)-1 else opt(b)=opt(b)+1 end_if end_if if scancode=38 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b-1:if b<1 then b=4 if scancode=40 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b+1:if b>4 then b=1 3d_load_texture opt(b),chemin$+"3d_L2.jpg":3d_show opt(b) if opt(b)>31 then file_load 26,chemin$+"silence.mp3":play 26:m=0 if (opt(b)=31 and m=0) then file_load 26,chemin$+"menu.mp3":tpm1=tpm2:play 26:m=26 gosub music:if tpm2-tpm1>24.1 then tpm1=tpm2:play 26 until scancode=13 for b=25 to 32:3d_hide b:next b ' LE HÉROS COURT VERS L'ENTRÉE DU LABYRINTHE PENDANT QUE LE PONT-LEVIS, ' LES PORTES ET LA HERSE S'OUVRENT if m>0 then file_load 26,chemin$+"entrée.mp3":gosub music:tpm1=tpm2:play 26 3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:if av<335 then gosub pxz:z=z+0.5:gosub pospk: ' 3d_hide pk:pk=pk+1:if pk>146 then pk=131 ' 3d_position pk,x,7,z:3d_show pk if av=49 then play 25: ' bruitage ouverture pont levis if av>50 and av<140 then 3d_x_rotate 16,av+40: ' MOUVEMENT ouverture DU PONT-LEVIS de l'entrée if av>150 and av<235 then 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt-0.5: ' mouvement rotatif ouverture des portes d'entrée if av=240 then play 23: ' bruitage de la herse qui se lève if av>240 and av<284 then 3d_y_position 15,hrs:hrs=hrs+0.4: ' MOUVEMENT ouverture DE LA HERSE à l'entrée gosub affiche:av=av+0.5 gosub music:if tpm2-tpm1>36.1 then tpm1=tpm2:play 26 until av>=340 3d_hide pk:pk=33:3d_position pk,x,7,z:3d_show pk
' LE HÉROS FAIT 1/2 TOUR gosub gauche:gosub gauche 3d_hide pk:pk=33:3d_position pk,x,7,z-10:3d_show pk ' FERMETURE DES PONT-LEVIS, PORTES ET HERSE av=180:play 24: ' bruitage fermeture pont levis repeat 3d_x_rotate 16,av:av=av-0.3: ' MOUVEMENT fermeture DU PONT-LEVIS de l'entrée until av<=90 repeat 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt+0.5: ' mouvement rotatif fermeture des portes d'entrée until prt>=360 play 22: ' bruitage de la herse qui se baisse repeat 3d_y_position 15,hrs:hrs=hrs-0.4: ' MOUVEMENT fermeture DE LA HERSE à l'entrée until hrs<=-1 ' LE HÉROS REVIENT VERS LA HERSE DE L'ENTRÉE QUI S'EST FERMÉE av=0:3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:gosub pospk:gosub affiche:av=av+0.5 until av>=20 ' LE HÉROS REFAIT 1/2 TOUR wait 1000:gosub droite:gosub droite timer_on 4 show 2 return ' ****************************************************************************** ' LA SORTIE DU LABYRINTHE sortie: timer_off_all 3d_hide pk:pk=33:3d_position pk,x,7,z+5:3d_show pk prt=0:hrs=-1:av=90 repeat 3d_z_rotate 19,prt:3d_z_rotate 20,180-prt:prt=prt+0.5: ' mouvement rotatif ouverture des portes de sortie until prt>=90 repeat 3d_y_position 22,hrs:hrs=hrs+0.5: ' MOUVEMENT ouverture DE LA HERSE à la sortie until hrs>=30 repeat 3d_x_rotate 21,av:av=av-0.5: ' MOUVEMENT ouverture DU PONT-LEVIS de la sortie until av<=0 delete 27:delete 28:delete 29:delete 30 file_load 26,chemin$+"entrée.mp3":play 26 3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:av=av+0.5:gosub affiche:gosub pospk:wait 40 until av>=80 gosub pxz:av=270 while scancode=0 3d_hide pk:pk=pk+1:if pk>130 then pk=34 3d_position pk,x,7,z:3d_show pk:3d_z_rotate pk,wrap_value(av) av=av+3:wait 40 end_while message "BRAVO, VOTRE HÉROS EST SORTI DU LABYRINTHE!":goto quit
' GESTION DU CHAINAGE SUR LE PROGRAMME SUIVANT ICI <----------- ' POUR LA 3ème PARTIE DE L'AVENTURE ' ****************************************************************************** ' LA SORTIE DU PROGRAMME fin: if message_confirmation_yes_no("Voulez-vous vraiment quitter ?")<>1 then return quit: timer_off_all delete 4 delete 3 delete 2 delete 1 if object_exists(30)=1 then delete 30 if object_exists(29)=1 then delete 29 if object_exists(28)=1 then delete 28 if object_exists(27)=1 then delete 27 delete 26 delete 25 delete 24 delete 23 delete 22 delete 21 delete 20 terminate Télécharger ici le fichier zip: FORT_LABYRINTHIl ne me reste plus qu'à vous souhaiter un vraiment très bon NOËL. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Dim 25 Déc 2011 - 18:35 | |
| Désolé, Bignono, j'ai mis du temps à répondre (fètes obligent), mais bon, je ne peux pas commenter correctement, mon DELL D600 utilisé en vacances ne suffit pas à faire tourner le programme. J'ai essayé de régler, mais je renonce. Je n'arrivais pas à modifier ou à lancer le jeu à cause du menu. J'ai donc fais sauter le menu. J'ai essayer de régler les valeur, le personnage cours au alenti vers le chateau mais à un moment, ça bloque ... Il faudra que j'attende la semaine prochaine le retour à la maison pour tester sur l'ordi fixe, je pense... Bon pour ceux qui ont des machines lentes, je donne le début du source modifié 'machines lentes' mais c'est insuffisants pour que le personnage arrive au labyrinthe... Sans doute d'autres modifs à faire mais là, je n'ai plus le temps pour le moment, sinon la famille de ma femme risquerait de râler ... - Code:
-
' ****************************************************************************** ' ****************************************************************************** ' ************************ FORT LABYRINTH version 1.13 ************************* ' ********************** CRÉÉ PAR bignono le 25/12/2011 ************************ ' **************************** EN BASIC PANORAMIC ****************************** ' ****************************************************************************** ' ****************************************************************************** ' ********************* 2ème partie de mon jeu d'aventure ********************** ' ****************************************************************************** ' ****************************************************************************** ' ******************************************************************************
dim c_espace,tch,tpm1,tpm2,opt(4),c(4) dim ang,av,b,bs,d,dtn,gd,hrs,h,i,j,k,m,n,pas,pasv,pk,r,s,v,prt,pt,rot,w,x,y,z dim chemin$,txt1$,txt2$,txt3$,txt4$,txt5$,txt6$,txt7$,titre1$,titre2$,titre3$ label affiche,droite,gauche,herodtn,intro,lab,moteur,music,pan1,pan2,pan4,pan8 label pivot,pospk,pxz,quit,r1,r2,r3,r4,r5,r6,r7,sortie,fin,trace chemin$ ="C:\Program Files\Panoramic Editor V 0.9.20\sources\Fort_Labyrinthe\" titre1$="Bignono présente":titre2$="* * * F O R T - L A B Y R I N T H * * *" titre3$="Programme et musique de Bignono" txt1$="Patientez, chargement en cours...":txt2$="Construction de la forteresse..." txt3$="Création du héros...":txt4$="Création du monstre...": ' Création du monstre n°1 n°2 n°3 txt5$="Génération du labyrinthe...":txt6$=" Création des murs dans la salle " txt7$="Initialisation du programme..."
sound 20:file_load 20,chemin$+"cours1.mp3" sound 21:file_load 21,chemin$+"cours2.mp3" sound 22:file_load 22,chemin$+"hersebaisser.mp3" sound 23:file_load 23,chemin$+"herselever.mp3" sound 24:file_load 24,chemin$+"pontlevisfermer.mp3" sound 25:file_load 25,chemin$+"pontlevisbaisser3.mp3" sound 26:file_load 26,chemin$+"chargement.mp3":play 26 sound 27:file_load 27,chemin$+"mus1.mp3" sound 28:file_load 28,chemin$+"mus2.mp3" sound 29:file_load 29,chemin$+"mus3.mp3" sound 30:file_load 30,chemin$+"mus4.mp3"
' ****************************************************************************** ' ************************ INITIALISATION DES VARIABLES ************************ ' ****************************************************************************** ' ************ h et v représentent les dimensions du labyrinthe **************** ' ****** pas : sert à règler la vitesse de déplacement dans le labyrinthe ****** ' ****** pasv: sert à règler la vitesse du zoom vertical *********************** h=21:v=20:n=h*v-1:h=h+1:v=v+1:d=1:w=13:pas=1.5:pasv=10:c_espace=0 dim a(h+1,v+1),mur(h+1,v+1),trc(h,v) gosub lab
label dbug DIM debug : debug =0 IF Debug =1 FORM 500 : WIDTH 500, 150 : HEIGHT 500, 200 : TOP 500, 3 : LEFT 500, 3 ALPHA 501 : PARENT 501, 500 : HEIGHT 501, 15 : TOP 501, 3 : LEFT 501, 3 ALPHA 502 : PARENT 502, 500 : HEIGHT 502, 15 : TOP 502, 20 : LEFT 502, 3 ALPHA 503 : PARENT 503, 500 : HEIGHT 503, 15 : TOP 503, 37 : LEFT 503, 3 ALPHA 504 : PARENT 504, 500 : HEIGHT 504, 15 : TOP 504, 54 : LEFT 504, 3 ALPHA 505 : PARENT 505, 500 : HEIGHT 505, 15 : TOP 505, 71 : LEFT 505, 3 ALPHA 506 : PARENT 506, 500 : HEIGHT 506, 15 : TOP 506, 88 : LEFT 506, 3 ALPHA 507 : PARENT 507, 500 : HEIGHT 507, 15 : TOP 507, 105 : LEFT 507, 3 ALPHA 508 : PARENT 508, 500 : HEIGHT 508, 15 : TOP 508, 122 : LEFT 508, 3 ALPHA 509 : PARENT 509, 500 : HEIGHT 509, 15 : TOP 509, 139 : LEFT 509, 3 END_IF
full_space 0:color 0,0,0,0:' border_hide 0
scene3d 1:3d_target_is 1:hide 1:full_space 1:light_position 0,1500,0:3d_skybox 1 3d_load_texture_right 1,chemin$+"sk1.bmp" 3d_load_texture_back 1,chemin$+"sk2.bmp" 3d_load_texture_top 1,chemin$+"sk3.bmp" 3d_load_texture_left 1,chemin$+"sk4.bmp" 3d_load_texture_front 1,chemin$+"sk5.bmp" 3d_load_texture_bottom 1,chemin$+"sk6.bmp" 3d_plane 2:3d_scale 2,1000,1000,1:3d_x_rotate 2,90:3d_y_position 2,-0.25 3d_load_texture 2,chemin$+"herbe.JPG":3d_u_tile 2,400:3d_v_tile 2,400 3d_plane 3:3d_scale 3,42,40,1:3d_x_rotate 3,90:3d_position 3,240,0,230 3d_load_texture 3,chemin$+"terre.jpg":3d_u_tile 3,10:3d_v_tile 3,10
3d_cube 4,1:3d_hide 4:3d_mesh 5:3d_hide 5: ' CRÉATION DES VÉHICULES MOTEUR ET CAMÉRA gosub dbug ' ****************************************************************************** ' **************** CONSTRUCTION DE LA FORTERESSE ************************ ' ****************************************************************************** print_locate screen_x/2-(text_width(txt2$,0)/2),screen_y/2-3*(text_height(txt2$,0)/2):print txt2$ ' LES 8 TOURS 3d_mesh 6:3d_load_object 6,chemin$+"tr.3ds":3d_load_texture 6,chemin$+"tr.jpg" 3d_position 6,240,0,230:3d_scale 6,42,44,32:3d_x_rotate 6,90:3d_z_rotate 6,180 3d_mesh 7:3d_load_object 7,chemin$+"gués.3ds":3d_load_texture 7,chemin$+"gués.bmp" 3d_position 7,240,0,230:3d_scale 7,42,44,32:3d_x_rotate 7,90:3d_z_rotate 7,180 ' les remparts latéraux à l'entrée 3d_box 8,42,72,20:3d_position 8,200,36,-33:3d_y_rotate 8,90:3d_load_texture 8,chemin$+"m1r.jpg" 3d_box 9,42,72,20:3d_position 9,288,36,-33:3d_y_rotate 9,90:3d_load_texture 9,chemin$+"m1r.jpg" ' les blocs remparts aux entrées et à la sortie 3d_box 10,22,72,20:3d_position 10,220,36,-80:3d_load_texture 10,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 11,22,72,20:3d_position 11,260,36,-80:3d_load_texture 11,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 12,21,24,20:3d_position 12,240,60,-80:3d_load_texture 12,chemin$+"m8.jpg": ' bloc au-dessus pont levis et portes entrée 3d_box 13,21,24,20:3d_position 13,240,60,20:3d_load_texture 13,chemin$+"m8.jpg" : ' bloc au-dessus herse 3d_box 14,21,24,20:3d_position 14,240,60,440:3d_load_texture 14,chemin$+"m8.jpg": ' bloc au-dessus portes sortie ' LA HERSE A L'ENTRÉE 3d_mesh 15:3d_position 15,240,-1,13:3d_x_rotate 15,90:3d_scale 15,1,1,1.15 3d_load_object 15,chemin$+"herse.3ds":3d_load_texture 15,chemin$+"herse.bmp" ' LE PONT-LEVIS A L'ENTRÉE 3d_mesh 16:3d_position 16,240,0,-90:3d_x_rotate 16,90:3d_scale 16,1,1,1.1 3d_load_object 16,chemin$+"pntlvs.3ds":3d_load_texture 16,chemin$+"pntlvs.jpg" ' LES PORTES D'ENTRÉE 3d_mesh 17:3d_position 17,227,0,-70:3d_x_rotate 17,90:3d_scale 17,1,1,1.1 3d_load_object 17,chemin$+"porte.3ds":3d_load_texture 17,chemin$+"porte.jpg" 3d_mesh 18:3d_position 18,252,0,-70:3d_x_rotate 18,90:3d_z_rotate 18,180:3d_scale 18,1,1,1.1 3d_load_object 18,chemin$+"porte.3ds":3d_load_texture 18,chemin$+"porte.jpg" ' LES PORTES DE SORTIE 3d_mesh 19:3d_position 19,230,0,442:3d_x_rotate 19,90:3d_scale 19,0.78,0.75,1.1 3d_load_object 19,chemin$+"porte.3ds":3d_load_texture 19,chemin$+"porte.jpg" 3d_mesh 20:3d_position 20,249,0,442:3d_x_rotate 20,90:3d_z_rotate 20,180:3d_scale 20,0.78,0.75,1.1 3d_load_object 20,chemin$+"porte.3ds":3d_load_texture 20,chemin$+"porte.jpg" ' LE PONT-LEVIS A LA SORTIE 3d_mesh 21:3d_position 21,240,0,450:3d_x_rotate 21,90:3d_scale 21,1,1,1.1 3d_load_object 21,chemin$+"pntlvs.3ds": 3d_load_texture 21,chemin$+"pntlvs.jpg" ' LA HERSE A LA SORTIE 3d_mesh 22:3d_position 22,240,-1,446:3d_x_rotate 22,90:3d_scale 22,1,1,1.15 3d_load_object 22,chemin$+"herse.3ds": 3d_load_texture 22,chemin$+"herse.bmp" ' TEXTE 3D LABYRINTH 3d_mesh 23:3d_load_object 23,chemin$+"Labyrinth.3ds":3d_load_texture 23,chemin$+"3d_L1.jpg" 3d_position 23,240,30,-250:3d_x_rotate 23,90:3d_scale 23,30,30,30:3d_z_rotate 23,180:3d_hide 23 ' TEXTE 3D FORT 3d_mesh 24:3d_load_object 24,chemin$+"Fort.3ds":3d_load_texture 24,chemin$+"3d_L1.jpg" 3d_position 24,240,30,-250:3d_x_rotate 24,90:3d_scale 24,30,30,30:3d_z_rotate 24,180:3d_hide 24 ' LE MENU OPTION EN LETTRES 3D AVEC TEXTURES font_name 0,"Times New Roman":font_size 0,50:font_bold 0:font_color 0,255,0,0 print_locate screen_x/2-(text_width(titre1$,0)/2),screen_y/2-12*(text_height(titre1$,0)/2):print titre1$:wait 1000 print_locate screen_x/2-(text_width(titre2$,0)/2),screen_y/2-10*(text_height(titre2$,0)/2):print titre2$:wait 1000 print_locate screen_x/2-(text_width(titre3$,0)/2),screen_y/2-8*(text_height(titre3$,0)/2):print titre3$:wait 1000 print_locate screen_x/2-(text_width(txt1$,0)/2),screen_y/2-5*(text_height(txt1$,0)/2):print txt1$:wait 1000
3d_mesh 25:3d_load_object 25,chemin$+"opt1_oui.3ds":3d_position 25,240,60,-225 3d_mesh 26:3d_load_object 26,chemin$+"opt1_non.3ds":3d_position 26,240,60,-225 3d_mesh 27:3d_load_object 27,chemin$+"opt2_oui.3ds":3d_position 27,240,50,-225 3d_mesh 28:3d_load_object 28,chemin$+"opt2_non.3ds":3d_position 28,240,50,-225 3d_mesh 29:3d_load_object 29,chemin$+"opt3_oui.3ds":3d_position 29,240,40,-225 3d_mesh 30:3d_load_object 30,chemin$+"opt3_non.3ds":3d_position 30,240,40,-225 3d_mesh 31:3d_load_object 31,chemin$+"opt4_oui.3ds":3d_position 31,240,30,-225 3d_mesh 32:3d_load_object 32,chemin$+"opt4_non.3ds":3d_position 32,240,30,-225 for b=25 to 32:3d_load_texture b,chemin$+"3d_L3.jpg":3d_x_rotate b,90 3d_scale b,5,5,5:3d_z_rotate b,180:3d_hide b:next b
print_locate screen_x/2-(text_width(txt3$,0)/2),screen_y/2-1*(text_height(txt3$,0)/2):print txt3$ ' CRÉATION DU HÉROS 3d_mesh 33:3d_load_object 33,chemin$+"pk001.3ds" 3d_mesh 34:3d_load_object 34,chemin$+"pk002.3ds" 3d_mesh 35:3d_load_object 35,chemin$+"pk003.3ds" 3d_mesh 36:3d_load_object 36,chemin$+"pk004.3ds" 3d_mesh 37:3d_load_object 37,chemin$+"pk005.3ds" 3d_mesh 38:3d_load_object 38,chemin$+"pk006.3ds" 3d_mesh 39:3d_load_object 39,chemin$+"pk007.3ds" 3d_mesh 40:3d_load_object 40,chemin$+"pk008.3ds" 3d_mesh 41:3d_load_object 41,chemin$+"pk009.3ds" 3d_mesh 42:3d_load_object 42,chemin$+"pk010.3ds" 3d_mesh 43:3d_load_object 43,chemin$+"pk011.3ds" 3d_mesh 44:3d_load_object 44,chemin$+"pk012.3ds" 3d_mesh 45:3d_load_object 45,chemin$+"pk013.3ds" 3d_mesh 46:3d_load_object 46,chemin$+"pk014.3ds" 3d_mesh 47:3d_load_object 47,chemin$+"pk015.3ds" 3d_mesh 48:3d_load_object 48,chemin$+"pk016.3ds" 3d_mesh 49:3d_load_object 49,chemin$+"pk017.3ds" 3d_mesh 50:3d_load_object 50,chemin$+"pk018.3ds" 3d_mesh 51:3d_load_object 51,chemin$+"pk019.3ds" 3d_mesh 52:3d_load_object 52,chemin$+"pk020.3ds" 3d_mesh 53:3d_load_object 53,chemin$+"pk021.3ds" 3d_mesh 54:3d_load_object 54,chemin$+"pk022.3ds" 3d_mesh 55:3d_load_object 55,chemin$+"pk023.3ds" 3d_mesh 56:3d_load_object 56,chemin$+"pk024.3ds" 3d_mesh 57:3d_load_object 57,chemin$+"pk025.3ds" 3d_mesh 58:3d_load_object 58,chemin$+"pk026.3ds" 3d_mesh 59:3d_load_object 59,chemin$+"pk027.3ds" 3d_mesh 60:3d_load_object 60,chemin$+"pk028.3ds" 3d_mesh 61:3d_load_object 61,chemin$+"pk029.3ds" 3d_mesh 62:3d_load_object 62,chemin$+"pk030.3ds" 3d_mesh 63:3d_load_object 63,chemin$+"pk031.3ds" 3d_mesh 64:3d_load_object 64,chemin$+"pk032.3ds" 3d_mesh 65:3d_load_object 65,chemin$+"pk033.3ds" 3d_mesh 66:3d_load_object 66,chemin$+"pk034.3ds" 3d_mesh 67:3d_load_object 67,chemin$+"pk035.3ds" 3d_mesh 68:3d_load_object 68,chemin$+"pk036.3ds" 3d_mesh 69:3d_load_object 69,chemin$+"pk037.3ds" 3d_mesh 70:3d_load_object 70,chemin$+"pk038.3ds" 3d_mesh 71:3d_load_object 71,chemin$+"pk039.3ds" 3d_mesh 72:3d_load_object 72,chemin$+"pk040.3ds" 3d_mesh 73:3d_load_object 73,chemin$+"pk041.3ds" 3d_mesh 74:3d_load_object 74,chemin$+"pk042.3ds" 3d_mesh 75:3d_load_object 75,chemin$+"pk043.3ds" 3d_mesh 76:3d_load_object 76,chemin$+"pk044.3ds" 3d_mesh 77:3d_load_object 77,chemin$+"pk045.3ds" 3d_mesh 78:3d_load_object 78,chemin$+"pk046.3ds" 3d_mesh 79:3d_load_object 79,chemin$+"pk047.3ds" 3d_mesh 80:3d_load_object 80,chemin$+"pk048.3ds" 3d_mesh 81:3d_load_object 81,chemin$+"pk049.3ds" 3d_mesh 82:3d_load_object 82,chemin$+"pk050.3ds" 3d_mesh 83:3d_load_object 83,chemin$+"pk051.3ds" 3d_mesh 84:3d_load_object 84,chemin$+"pk052.3ds" 3d_mesh 85:3d_load_object 85,chemin$+"pk053.3ds" 3d_mesh 86:3d_load_object 86,chemin$+"pk054.3ds" 3d_mesh 87:3d_load_object 87,chemin$+"pk055.3ds" 3d_mesh 88:3d_load_object 88,chemin$+"pk056.3ds" 3d_mesh 89:3d_load_object 89,chemin$+"pk057.3ds" 3d_mesh 90:3d_load_object 90,chemin$+"pk058.3ds" 3d_mesh 91:3d_load_object 91,chemin$+"pk059.3ds" 3d_mesh 92:3d_load_object 92,chemin$+"pk060.3ds" 3d_mesh 93:3d_load_object 93,chemin$+"pk061.3ds" 3d_mesh 94:3d_load_object 94,chemin$+"pk062.3ds" 3d_mesh 95:3d_load_object 95,chemin$+"pk063.3ds" 3d_mesh 96:3d_load_object 96,chemin$+"pk064.3ds" 3d_mesh 97:3d_load_object 97,chemin$+"pk065.3ds" 3d_mesh 98:3d_load_object 98,chemin$+"pk066.3ds" 3d_mesh 99:3d_load_object 99,chemin$+"pk067.3ds" 3d_mesh 100:3d_load_object 100,chemin$+"pk068.3ds" 3d_mesh 101:3d_load_object 101,chemin$+"pk069.3ds" 3d_mesh 102:3d_load_object 102,chemin$+"pk070.3ds" 3d_mesh 103:3d_load_object 103,chemin$+"pk071.3ds" 3d_mesh 104:3d_load_object 104,chemin$+"pk072.3ds" 3d_mesh 105:3d_load_object 105,chemin$+"pk073.3ds" 3d_mesh 106:3d_load_object 106,chemin$+"pk074.3ds" 3d_mesh 107:3d_load_object 107,chemin$+"pk075.3ds" 3d_mesh 108:3d_load_object 108,chemin$+"pk076.3ds" 3d_mesh 109:3d_load_object 109,chemin$+"pk077.3ds" 3d_mesh 110:3d_load_object 110,chemin$+"pk078.3ds" 3d_mesh 111:3d_load_object 111,chemin$+"pk079.3ds" 3d_mesh 112:3d_load_object 112,chemin$+"pk080.3ds" 3d_mesh 113:3d_load_object 113,chemin$+"pk081.3ds" 3d_mesh 114:3d_load_object 114,chemin$+"pk082.3ds" 3d_mesh 115:3d_load_object 115,chemin$+"pk083.3ds" 3d_mesh 116:3d_load_object 116,chemin$+"pk084.3ds" 3d_mesh 117:3d_load_object 117,chemin$+"pk085.3ds" 3d_mesh 118:3d_load_object 118,chemin$+"pk086.3ds" 3d_mesh 119:3d_load_object 119,chemin$+"pk087.3ds" 3d_mesh 120:3d_load_object 120,chemin$+"pk088.3ds" 3d_mesh 121:3d_load_object 121,chemin$+"pk089.3ds" 3d_mesh 122:3d_load_object 122,chemin$+"pk090.3ds" 3d_mesh 123:3d_load_object 123,chemin$+"pk091.3ds" 3d_mesh 124:3d_load_object 124,chemin$+"pk092.3ds" 3d_mesh 125:3d_load_object 125,chemin$+"pk093.3ds" 3d_mesh 126:3d_load_object 126,chemin$+"pk094.3ds" 3d_mesh 127:3d_load_object 127,chemin$+"pk095.3ds" 3d_mesh 128:3d_load_object 128,chemin$+"pk096.3ds" 3d_mesh 129:3d_load_object 129,chemin$+"pk097.3ds" 3d_mesh 130:3d_load_object 130,chemin$+"pk098.3ds" 3d_mesh 131:3d_load_object 131,chemin$+"pk099.3ds" 3d_mesh 132:3d_load_object 132,chemin$+"pk100.3ds" 3d_mesh 133:3d_load_object 133,chemin$+"pk101.3ds" 3d_mesh 134:3d_load_object 134,chemin$+"pk102.3ds" 3d_mesh 135:3d_load_object 135,chemin$+"pk103.3ds" 3d_mesh 136:3d_load_object 136,chemin$+"pk104.3ds" 3d_mesh 137:3d_load_object 137,chemin$+"pk105.3ds" 3d_mesh 138:3d_load_object 138,chemin$+"pk106.3ds" 3d_mesh 139:3d_load_object 139,chemin$+"pk107.3ds" 3d_mesh 140:3d_load_object 140,chemin$+"pk108.3ds" 3d_mesh 141:3d_load_object 141,chemin$+"pk109.3ds" 3d_mesh 142:3d_load_object 142,chemin$+"pk110.3ds" 3d_mesh 143:3d_load_object 143,chemin$+"pk111.3ds" 3d_mesh 144:3d_load_object 144,chemin$+"pk112.3ds" 3d_mesh 145:3d_load_object 145,chemin$+"pk113.3ds" 3d_mesh 146:3d_load_object 146,chemin$+"pk114.3ds" pk=32 repeat pk=pk+1:3d_load_texture pk,chemin$+"pk.bmp":3d_scale pk,0.25,0.25,0.25 3d_x_rotate pk,90:3d_z_rotate pk,270:3d_hide pk:3d_position pk,240,7,-290 until pk>=146:pk=33
' GARGOYLES 3d_mesh 147:3d_load_object 147,chemin$+"gargoyle.3ds" 3d_scale 147,0.75,0.75,0.75:3d_x_rotate 147,90:3d_y_rotate 147,30 3d_position 147,232,18,20:3d_color 147,0,50,40 3d_mesh 148:3d_load_object 148,chemin$+"gargoyle.3ds" 3d_scale 148,0.75,0.75,0.75 3d_x_rotate 148,90:3d_y_rotate 148,330:3d_z_rotate 148,180 3d_position 148,248,18,20:3d_color 148,0,50,40 ' DRAGONS 3d_box 149,20,5,40:3d_position 149,220,0,-30:3d_load_texture 149,chemin$+"3d_L4.jpg": ' piedestal marbre droit 3d_box 150,20,5,40:3d_position 150,268,0,-30:3d_load_texture 150,chemin$+"3d_L4.jpg": ' piedestal marbre gauche ' dragon 1 droit 3d_mesh 151:3d_load_object 151,chemin$+"dragdroit.3ds":3d_color 151,0,25,15 3d_scale 151,40,40,40:3d_y_rotate 151,150 3d_x_rotate 151,90:3d_position 151,218,2,-30 ' dragon 2 gauche 3d_mesh 152:3d_load_object 152,chemin$+"dragauche.3ds":3d_color 152,0,25,15 3d_scale 152,40,40,40:3d_y_rotate 152,210 3d_x_rotate 152,90:3d_position 152,272,2,-30
' ****************************************************************************** ' **************** CONSTRUCTION DU LABYRINTHE ************************ ' ****************************************************************************** ' CAS 1 = MUR GAUCHE, CAS 2 = MUR ARRIÈRE, CAS 4 = MUR DROIT, CAS 8 = MUR FACE ' LES AUTRES CAS, C'EST UNE ADDITION; EX: CAS 3 = CAS 1 + CAS 2 print_locate screen_x/2-(text_width(txt5$,0)/2),screen_y/2+3*(text_height(txt5$,0)/2):print txt5$ for i=1 to h:a(i,1)=8:next i:for j=1 to v:a(1,j)=1:next j for j=2 to v for i=2 to h: trc(i,j)=0 if (i=(int(h/2)+1) and j=2) then a(i,j)=a(i,j)-8 if (i=(int(h/2)+1) and j=v) then a(i,j)=a(i,j)-2 txt6$=left$(txt6$,33)+str$(i*j)+"..." print_locate screen_x/2-(text_width(txt6$,0)/2),screen_y/2+5*(text_height(txt6$,0)/2):print txt6$
select a(i,j) case 1 gosub pan1 case 2 gosub pan2 case 3 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 case 4 gosub pan4 case 5 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 case 6 gosub pan2:gosub pan4 case 7 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2:gosub pan4 case 8 gosub pan8 case 9 if a(i-1,j)<4 or a(i-1,j)>7 and a(i-1,j)<12 then gosub pan1 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 10 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 11 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 12 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 13 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 14 gosub pan2:gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 end_select next i next j
gosub dbug print_locate screen_x/2-text_width(txt7$,0)/2,screen_y/2+7*text_height(txt7$,0)/2:print txt7$
' ****************************************************************************** ' ****************** CRÉATION DE LA BOUSSOLE ************************ ' ****************************************************************************** scene3d 2:3d_target_is 2:hide 2:width 2,160:height 2,160 left 2,screen_x-180:top 2,screen_y-240:color 2,0,0,0 3d_cylinder number_3d_objects+1,0.25,1,1 3d_load_texture number_3d_objects,chemin$+"étui.jpg" 3d_x_rotate number_3d_objects,90 3d_cylinder number_3d_objects+1,0.26,0.9,0.9 3d_load_texture number_3d_objects,chemin$+"cadran.jpg" 3d_x_rotate number_3d_objects,270 3d_mesh number_3d_objects+1 3d_load_object number_3d_objects,chemin$+"aiguille.3ds" 3d_load_texture number_3d_objects,chemin$+"aiguille.bmp" 3d_x_rotate number_3d_objects,270:3d_y_rotate number_3d_objects,180 bs=number_3d_objects 3d_target_is 1
' ****************************************************************************** ' ** Initialisation position départ et création d'1 timer pour l'intro du jeu ** ' ** Création d'1 second timer pour gèrer les déplacements dans le labyrinthe ** ' ****************************************************************************** i=int(h/2)+1:j=1:dtn=1
' ! INFO: en dessous de 17 le timer_interval 3 est inopérant & le prog ralenti ! timer 3:timer_interval 3,200:on_timer 3,intro timer 4:timer_interval 4,50:on_timer 4,moteur show 1 end
' ****************************************************************************** ' ***************** LE PROGRAMME PRINCIPAL ****************************** ' ****************************************************************************** moteur:
timer_off 4
gosub dbug
if m<>0 gosub music if tpm2-tpm1>60 then tpm1=tpm2:m=m+1:play m:if m>29 then m=26 end_if
if c_espace=1 and opt(2)=27 then gosub trace timer_on 4:tch=scancode:timer_off 4 select tch case 0: ' LE HÉROS EN MOUVEMENT RESTE EN POSITION STATIQUE 3d_hide pk:pk=pk+1:if pk>130 then pk=33 3d_position pk,x,7,z:3d_show pk case 27:gosub fin: ' SORTIE PROGRAMME case 32:c_espace=1: ' AFFICHAGE DU PLAN DU LABYRINTHE case 37:gosub gauche: ' FLECHE GAUCHE = ROTATION A GAUCHE case 39:gosub droite: ' FLECHE DROITE = ROTATION A DROITE case 38: ' FLECHE HAUT = DTN DEFINIT LA DIRECTION NORD, OUEST, SUD OU EST 3d_hide pk:pk=131:3d_show pk select dtn case 1 if j < v+1 if a(i,j)=0 or a(i,j)=1 or a(i,j)=4 or a(i,j)=5 or a(i,j)=8 or a(i,j)=9 or a(i,j)=12 or a(i,j)=13 pt=j*20:j=j+1:gd=j*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 2 if i < h and j > 1 if a(i,j)<4 or a(i,j)>7 and a(i,j)<12 pt=i*20:i=i+1:gd=i*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 3 if j > 2 if a(i,j)<8 pt=j*20:j=j-1:gd=j*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if case 4 if i > 2 and j > 1 if odd(a(i,j))=0 pt=i*20:i=i-1:gd=i*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if end_select end_select
' MÉMORISATION DE SON PASSAGE PAR DES SPHÈRES ORANGES ==> OPTION PETIT POUCET ' if opt(1)=25 ' if trc(i,j)=0 and j>1 ' 3d_sphere number_3d_objects+1,2 ' 3d_position number_3d_objects,i*20,1,j*20 ' 3d_color number_3d_objects,224,128,32 ' trc(i,j)=number_3d_objects ' end_if ' end_if
' ROTATION DU HÉROS DANS LE SENS DU DÉPLACEMENT gosub herodtn
' TEST DE SORTIE DU LABYRINTHE if j=v and i=(int(h/2)+1) and dtn=1 then goto sortie
timer_on 4
return
' ****************************************************************************** ' ********************* LES ROUTINES *********************************** ' ******************************************************************************
' CALCUL DES POSITIONS DES VÉHICULES MOTEUR ET CAMÉRA affiche: 3d_position 5,o3d_x_position(4),o3d_y_position(4),o3d_z_position(4):3d_rotate 5,o3d_x_rotate(4),o3d_y_rotate(4),o3d_z_rotate(4) 3d_move 5,1:cam_position o3d_x_position(4),w,o3d_z_position(4):point_position o3d_x_position(5),13,o3d_z_position(5) return
' CRÉATION DES MURS DU LABYRINTHE pan1: if i=2 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)-20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan2: if j=v 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)+20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)+10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return pan4: if i=h 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)+20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)+10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan8: if j=2 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)-20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)-10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return
' VISION SATELLITE DU LABYRINTHE EN 3D trace: repeat w=w+pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w>=600
repeat if scancode=27 then gosub fin if scancode=37 then gosub gauche if scancode=39 then gosub droite until scancode=32
repeat w=w-pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w<=13 c_espace=0 return
' ROTATION A GAUCHE gauche: ang=rot+90:dtn=dtn+1:if dtn>4 then dtn=1 repeat rot=rot+6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot>=ang return
' ROTATION A DROITE droite: ang=rot-90:dtn=dtn-1:if dtn<1 then dtn=4 repeat rot=rot-6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot<=ang return
' ROTATION DE LA CAMÉRA LORS DE LA VISION SATELLITE pivot: cam_position o3d_x_position(4),o3d_y_position(4)+w,o3d_z_position(4) return ' ROUTINES DE RECHERCHE DES POSITIONS X ET Z DU HÉROS pospk: 3d_hide pk:pk=pk+1:if pk>146 then pk=131 if pk=138 then play 20 if pk=146 then play 21 gosub herodtn 3d_position pk,x,7,z:3d_show pk return herodtn: if dtn=1 then x=o3d_x_position(4):z=o3d_z_position(4)+5:3d_z_rotate pk,270 if dtn=2 then x=o3d_x_position(4)+5:z=o3d_z_position(4):3d_z_rotate pk,0 if dtn=3 then x=o3d_x_position(4):z=o3d_z_position(4)-5:3d_z_rotate pk,90 if dtn=4 then x=o3d_x_position(4)-5:z=o3d_z_position(4):3d_z_rotate pk,180 return pxz: x=o3d_x_position(pk):z=o3d_z_position(pk) return
' GÉNÉRATION DU LABYRINTHE lab:
for j=1 to v+1:a(1,j)=4:a(h+1,j)=1:next j for i=2 to h:a(i,v+1)=8:a(i,1)=2:for j=2 to v:a(i,j)=15:next j:next i r=int(h/2+1):s=int(v/2+1):a(r,s)=15 for k=1 to n r1: i=0 if a(r-1,s)=15 then i=i+1 :c(i)=1 if a(r,s-1)=15 then i=i+1 :c(i)=2 if a(r+1,s)=15 then i=i+1 :c(i)=3 if a(r,s+1)=15 then i=i+1 :c(i)=4 if i=0 then goto r2 if i<>1 then i=int(rnd(i)+1) select c(i) case 1 :a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2):r=r-1:a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4 case 2 :a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8:s=s-1:a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2 case 3 :a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4:r=r+1:a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2) case 4 :a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2:s=s+1:a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8 end_select goto r7 r2: if d=-1 then goto r3 if r<>h then goto r5 if s<>v then goto r4 r=2:s=2:goto r6 r3: if r<>2 then goto r5 if s<>v then goto r4 r=h:s=2: goto r6 r4: s=s+1:d=-1*d:goto r6 r5: r=r+d r6: if a(r,s)=15 then goto r2 goto r1 r7: mur(r,s)=int(rnd(6)+1) if mur(r,s)=mur(r-1,s) or mur(r,s)=mur(r+1,s) or mur(r,s)=mur(r,s-1) or mur(r,s)=mur(r,s+1) then goto r7 next k return
' GESTION DE LA MUSIQUE music: tpm2=(val(left$(time$,2))*3600)+(val(mid$(time$,4,2))*60)+val(right$(time$,2)) return
' ****************************************************************************** ' ****************************************************************************** ' ******************* routine de DEBUGAGE ************************************** ' ****************************************************************************** ' ****************************************************************************** dbug: IF debug =1 CAPTION 501, "number_3d_objects=" + STR$(number_3d_objects) CAPTION 502, "pk=" + STR$(pk) CAPTION 503, "number_objects=" + STR$(number_objects) ' caption 504, "z=" + str$(z) caption 505, "dtn=" + str$(dtn) caption 506, "a(i,j)=" + str$(a(i,j)) caption 507, "a(i,v)=" + str$(a(i,v)) caption 508, "i=" + str$(i) caption 509, "j=" + str$(j) END_IF return
' ****************************************************************************** ' DÉBUT DU JEU --> NOM DU JEU, RÈGLAGE OPTIONS & ENTRÉE DANS LABYRINTHE ' ****************************************************************************** intro: timer_off_all av=180:hrs=-1:prt=360:pk=33:m=26 3d_position 4,((h/2)*20)-(3*odd(h))+20,15,-300:3d_show 23:3d_show 24:3d_show 33 gosub affiche ' file_load 26,chemin$+"FORT LABYRINTH.mp3":gosub music:tpm1=tpm2:play 26 ' LE NOM DU JEU EN PIERRE TOURNOIE ET LE HÉROS EN MOUVEMENT RESTE STATIQUE while scancode=0 3d_z_rotate 23,av:3d_z_rotate 24,abs(av):av=av-4 3d_hide pk:gosub pxz:pk=pk+1:if pk>=130 then pk=33 3d_position pk,x,7,z:3d_show pk gosub music:if tpm2-tpm1>62 then tpm1=tpm2:play 26 end_while 3d_hide 23:3d_hide 24:av=0 ' file_load 26,chemin$+"menu.mp3":gosub music:tpm1=tpm2:play 26 ' AFFICHAGE DES OPTIONS DU JEU SOUS FORME DE MENU, LE HÉROS TOUJOURS STATIQUE opt(1)=26:opt(2)=27:opt(3)=29:opt(4)=31 :' for b=1 to 4:3d_show opt(b):next b:b=1 ' repeat ' tch = scancode ' 3d_hide pk:gosub pxz:pk=pk+1:if pk>=130 then pk=33 ' 3d_position pk,x,7,z:3d_show pk ' if tch=27 then gosub fin ' if tch=37 or tch=39 ' 3d_hide opt(b) ' if even(opt(b))=1 ' opt(b)=opt(b)-1 ' else ' opt(b)=opt(b)+1 ' end_if ' end_if ' if tch=38 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b-1:if b<1 then b=4 ' if tch=40 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b+1:if b>4 then b=1 ' if tch=38 or tch=40 then 3d_load_texture opt(b),chemin$+"3d_L2.jpg":3d_show opt(b) ' if opt(b)>31 then file_load 26,chemin$+"silence.mp3":play 26:m=0 ' if (opt(b)=31 and m=0) then file_load 26,chemin$+"menu.mp3":tpm1=tpm2:play 26:m=26 ' rem gosub music:if tpm2-tpm1>24.1 then tpm1=tpm2:play 26 ' until tch=13 ' for b=25 to 32:3d_hide b:next b ' LE HÉROS COURT VERS L'ENTRÉE DU LABYRINTHE PENDANT QUE LE PONT-LEVIS, ' LES PORTES ET LA HERSE S'OUVRENT if m>0 then file_load 26,chemin$+"entrée.mp3":gosub music:tpm1=tpm2:play 26 3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:if av<335 then gosub pxz:z=z+0.5:gosub pospk: ' 3d_hide pk:pk=pk+1:if pk>146 then pk=131 ' 3d_position pk,x,7,z:3d_show pk if av=49 then play 25: ' bruitage ouverture pont levis if av>50 and av<140 then 3d_x_rotate 16,av+40: ' MOUVEMENT ouverture DU PONT-LEVIS de l'entrée if av>150 and av<235 then 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt-0.5: ' mouvement rotatif ouverture des portes d'entrée if av=240 then play 23: ' bruitage de la herse qui se lève if av>240 and av<284 then 3d_y_position 15,hrs:hrs=hrs+0.4: ' MOUVEMENT ouverture DE LA HERSE à l'entrée gosub affiche:av=av+0.5 gosub music:if tpm2-tpm1>36.1 then tpm1=tpm2:play 26 until av>=340 3d_hide pk:pk=33:3d_position pk,x,7,z:3d_show pk
' LE HÉROS FAIT 1/2 TOUR gosub gauche:gosub gauche 3d_hide pk:pk=33:3d_position pk,x,7,z-10:3d_show pk ' FERMETURE DES PONT-LEVIS, PORTES ET HERSE av=180:play 24: ' bruitage fermeture pont levis repeat 3d_x_rotate 16,av:av=av-0.3: ' MOUVEMENT fermeture DU PONT-LEVIS de l'entrée until av<=90 repeat 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt+0.5: ' mouvement rotatif fermeture des portes d'entrée until prt>=360 play 22: ' bruitage de la herse qui se baisse repeat 3d_y_position 15,hrs:hrs=hrs-0.4: ' MOUVEMENT fermeture DE LA HERSE à l'entrée until hrs<=-1 ' LE HÉROS REVIENT VERS LA HERSE DE L'ENTRÉE QUI S'EST FERMÉE av=0:3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:gosub pospk:gosub affiche:av=av+0.5 until av>=20 ' LE HÉROS REFAIT 1/2 TOUR wait 1000:gosub droite:gosub droite timer_on 4 show 2 return ' ****************************************************************************** ' LA SORTIE DU LABYRINTHE sortie: timer_off_all 3d_hide pk:pk=33:3d_position pk,x,7,z+5:3d_show pk prt=0:hrs=-1:av=90 repeat 3d_z_rotate 19,prt:3d_z_rotate 20,180-prt:prt=prt+0.5: ' mouvement rotatif ouverture des portes de sortie until prt>=90 repeat 3d_y_position 22,hrs:hrs=hrs+0.5: ' MOUVEMENT ouverture DE LA HERSE à la sortie until hrs>=30 repeat 3d_x_rotate 21,av:av=av-0.5: ' MOUVEMENT ouverture DU PONT-LEVIS de la sortie until av<=0 delete 27:delete 28:delete 29:delete 30 file_load 26,chemin$+"entrée.mp3":play 26 3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:av=av+0.5:gosub affiche:gosub pospk:wait 40 until av>=80 gosub pxz:av=270 while scancode=0 3d_hide pk:pk=pk+1:if pk>130 then pk=34 3d_position pk,x,7,z:3d_show pk:3d_z_rotate pk,wrap_value(av) av=av+3:wait 40 end_while message "BRAVO, VOTRE HÉROS EST SORTI DU LABYRINTHE!":goto quit
' GESTION DU CHAINAGE SUR LE PROGRAMME SUIVANT ICI <----------- ' POUR LA 3ème PARTIE DE L'AVENTURE ' ****************************************************************************** ' LA SORTIE DU PROGRAMME fin: if message_confirmation_yes_no("Voulez-vous vraiment quitter ?")<>1 then return quit: timer_off_all delete 4 delete 3 delete 2 delete 1 if object_exists(30)=1 then delete 30 if object_exists(29)=1 then delete 29 if object_exists(28)=1 then delete 28 if object_exists(27)=1 then delete 27 delete 26 delete 25 delete 24 delete 23 delete 22 delete 21 delete 20 terminate | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Dim 25 Déc 2011 - 19:14 | |
| Bonsoir Jicehel, J'espère que tu passes de bonne fêtes de Noël. Je viens de rentrer de l'aéroport d'Orly, où je viens d'accompagner ma femme qui décolle pour Bamako pour aller voir sa famille et du coup, je reste seul avec mes deux filles pour 1 mois. Donc j'aurais beaucoup moins de temps pour programmer ce début d'année. Cet après-midi, j'ai monté le programme Fort Labyrinth sur le 2ème ordi de ma femme, et je me suis apperçu qu'il tournait plus vite que sur le mien. Du coup je vais être obligé de règler à nouveau les paramêtres, mais pour ralentir le programme, pas comme toi pour l'accélérer! Je crois qu'il est grand temps que tu penses à changer de machine . Je savais bien que pour ce genre de jeu, la vitesse d'éxécution est différente d'un ordi à l'autre; d'où mon post sur la vitesse des processeurs. Si je pouvais trouver un algorythme de mesure de performance carte mère/processeur, au début de chaque jeu, je peux règler les variables qui font la vitesse d'éxécution du programme. C'est peut-être utopique comme idée, mais je ne vois comment faire autrement pour le moment. A moins que quelqu'un ait une idée géniale. Ou alors Jack qui nous fasse une super instruction dans ce sens. Bon j'arrête là mon délire, et je vous souhaite à tous et à vos familles d'excellentes fêtes de NOËL! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Dim 25 Déc 2011 - 22:54 | |
| Non serieusement, je pense que ton idée et difficile mais importante, il faudrait que dans les versions de Panoramic orienté 3D ou dans Panoramic même, il y un espèce de timer d'execution d'une procédure, par exemple. Qu'on puise dire par exemple tgosub affiche, 50 => affiche s'execute en 50ms ou plus si il le fait en moins, on attend que 50ms se soit ecoulé avant de faire le return se qui permettrait d'uniformiser un peu l'execution des programmes indépendamment du processeur (sauf pour les machines les plus lentes qui ramerait toujours car Jack ne peux toujours pas coder de miracle (j'ai toujours dit qu'il était perfectible ) | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Lun 26 Déc 2011 - 12:06 | |
| Bonjour à tous Pour ceux qui trouvent que le personnage est trop rapide voici comment on peut le ralentir de manière simple: - Code:
-
' *** POUR RALENTIR LE PERSONNAGE ****
' Changer ses deux lignes suivantes 3d_hide pk:pk=pk+1:if pk>130 then pk=33 3d_position pk,x,7,z:3d_show pk ' par celles-ci (on peut mettre pk=pk+0,75 ou 0.5 ou 0.25 pour adapter la vitesse ou une autre valeur de votre choix) 3d_hide int(pk):pk=pk+0.5:if pk>130 then pk=33 3d_position int(pk),x,7,z:3d_show int(pk) ' Changer partout où il y a un 3d_hide pk et un 3d_show(pk), n'oubliez pas le 3d_position aussi
' Changer aussi de la même manière dans la procédure pospk Donc pour l'accélérer, il faudra faire pk=pk+1.5 ou 2 ou +; mais là, attention, toutes les frames du personnage n'apparaîtront pas! Jicehel, ton idée du tgosub affiche,50 est interressante, mais si on a une partie d'un prog qui doit être éxécutée en 1sec (tgosub affiche,1000) et que le processeur le fait en 500milisecondes, il faut le bloquer 500milisecondes avant de passer à la suite. Non ce qu'il faut à ce moment là, c'est que le processeur sache qu'il faut dérouler l'éxécution en 2 fois plus de temps donc il doit diviser par deux sa vitesse d'éxécution. Ça me parait difficile à programmer pour Jack ce genre de chose. Bon courage à tous! | |
| | | Invité Invité
| Sujet: Re: FORT LABYRINTH Lun 26 Déc 2011 - 17:00 | |
| Bonsoir. Je lis votre post, et je me demandais si vous saviez combien de temps il faudrait que l'image ou je ne sais pas quoi, soit affiché. Pour l'instant je ne télécharge rien, j'ai trop à faire. Je me disais que si on sait qu'il faille par exemple qu'une image soit affichée disons: 1/2 seconde avant de continuer, il y a une chose très simple à faire. Je pense pouvoir le faire en Autoit, mais qu'une dll simple pourrait aussi convenir. Il faut tenir compte qu'il n'y a pas que la rapidité du processeur, mais si une tâche d'arrière fond, fonctionne, connaitre la rapidité ne résoud pas tout. On peut précédé ainsi: mettre un top temps au début d'une procédure, et à la fin de la procédure, si le temps n'est pas à zéro, alors on attend que le compte à rebours soit fini, avant d'arriver au return, ou à l'affichage suivant. Il est évident que cela ne fonctionne que si le processeur est rapide, et non si il est trop lent auquel cas il n'y a pas de solution direct. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Lun 26 Déc 2011 - 22:28 | |
| En effet, ça serait un système pour lisser la vitesse d'éxécution et standardiser le source sans avoir à paramètrer la vitesse sur chaque machine | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Mar 27 Déc 2011 - 0:37 | |
| Bon j'ai mis Panoramic sur l'ordi de mon beau père et j'ai testé et là, c'est vrai que ça marche très bien (trop, ça aller en effet trop vite comme tu nous l'indiquais) Pour les fénéants qui ne voudraient pas avoir à modifier le source comme indiqué comme Bignono, je vous mets ici le source pour les machines rapides - Code:
-
' ****************************************************************************** ' ****************************************************************************** ' ************************ FORT LABYRINTH version 1.13 ************************* ' ********************** CRÉÉ PAR bignono le 25/12/2011 ************************ ' **************************** EN BASIC PANORAMIC ****************************** ' ****************************************************************************** ' ****************************************************************************** ' ********************* 2ème partie de mon jeu d'aventure ********************** ' ****************************************************************************** ' ****************************************************************************** ' ******************************************************************************
dim c_espace,tch,tpm1,tpm2,opt(4),c(4) dim ang,av,b,bs,d,dtn,gd,hrs,h,i,j,k,m,n,pas,pasv,pk,r,s,v,prt,pt,rot,w,x,y,z dim chemin$,txt1$,txt2$,txt3$,txt4$,txt5$,txt6$,txt7$,titre1$,titre2$,titre3$ label affiche,droite,gauche,herodtn,intro,lab,moteur,music,pan1,pan2,pan4,pan8 label pivot,pospk,pxz,quit,r1,r2,r3,r4,r5,r6,r7,sortie,fin,trace chemin$ ="C:\Program Files\Panoramic\Sources\fort_labyrinth\" titre1$="Bignono présente":titre2$="* * * F O R T - L A B Y R I N T H * * *" titre3$="Programme et musique de Bignono" txt1$="Patientez, chargement en cours...":txt2$="Construction de la forteresse..." txt3$="Création du héros...":txt4$="Création du monstre...": ' Création du monstre n°1 n°2 n°3 txt5$="Génération du labyrinthe...":txt6$=" Création des murs dans la salle " txt7$="Initialisation du programme..."
sound 20:file_load 20,chemin$+"cours1.mp3" sound 21:file_load 21,chemin$+"cours2.mp3" sound 22:file_load 22,chemin$+"hersebaisser.mp3" sound 23:file_load 23,chemin$+"herselever.mp3" sound 24:file_load 24,chemin$+"pontlevisfermer.mp3" sound 25:file_load 25,chemin$+"pontlevisbaisser3.mp3" sound 26:file_load 26,chemin$+"chargement.mp3":play 26 sound 27:file_load 27,chemin$+"mus1.mp3" sound 28:file_load 28,chemin$+"mus2.mp3" sound 29:file_load 29,chemin$+"mus3.mp3" sound 30:file_load 30,chemin$+"mus4.mp3"
' ****************************************************************************** ' ************************ INITIALISATION DES VARIABLES ************************ ' ****************************************************************************** ' ************ h et v représentent les dimensions du labyrinthe **************** ' ****** pas : sert à règler la vitesse de déplacement dans le labyrinthe ****** ' ****** pasv: sert à règler la vitesse du zoom vertical *********************** h=21:v=20:n=h*v-1:h=h+1:v=v+1:d=1:w=13:pas=0.25:pasv=5:c_espace=0 dim a(h+1,v+1),mur(h+1,v+1),trc(h,v) gosub lab
label dbug DIM debug : debug =0 IF Debug =1 FORM 500 : WIDTH 500, 150 : HEIGHT 500, 200 : TOP 500, 3 : LEFT 500, 3 ALPHA 501 : PARENT 501, 500 : HEIGHT 501, 15 : TOP 501, 3 : LEFT 501, 3 ALPHA 502 : PARENT 502, 500 : HEIGHT 502, 15 : TOP 502, 20 : LEFT 502, 3 ALPHA 503 : PARENT 503, 500 : HEIGHT 503, 15 : TOP 503, 37 : LEFT 503, 3 ALPHA 504 : PARENT 504, 500 : HEIGHT 504, 15 : TOP 504, 54 : LEFT 504, 3 ALPHA 505 : PARENT 505, 500 : HEIGHT 505, 15 : TOP 505, 71 : LEFT 505, 3 ALPHA 506 : PARENT 506, 500 : HEIGHT 506, 15 : TOP 506, 88 : LEFT 506, 3 ALPHA 507 : PARENT 507, 500 : HEIGHT 507, 15 : TOP 507, 105 : LEFT 507, 3 ALPHA 508 : PARENT 508, 500 : HEIGHT 508, 15 : TOP 508, 122 : LEFT 508, 3 ALPHA 509 : PARENT 509, 500 : HEIGHT 509, 15 : TOP 509, 139 : LEFT 509, 3 END_IF
full_space 0:color 0,0,0,0:' border_hide 0
font_name 0,"Times New Roman":font_size 0,50:font_bold 0:font_color 0,255,0,0 print_locate screen_x/2-(text_width(titre1$,0)/2),screen_y/2-12*(text_height(titre1$,0)/2):print titre1$:wait 1000 print_locate screen_x/2-(text_width(titre2$,0)/2),screen_y/2-10*(text_height(titre2$,0)/2):print titre2$:wait 1000 print_locate screen_x/2-(text_width(titre3$,0)/2),screen_y/2-8*(text_height(titre3$,0)/2):print titre3$:wait 1000 print_locate screen_x/2-(text_width(txt1$,0)/2),screen_y/2-5*(text_height(txt1$,0)/2):print txt1$:wait 1000
scene3d 1:3d_target_is 1:hide 1:full_space 1:light_position 0,1500,0:3d_skybox 1 3d_load_texture_right 1,chemin$+"sk1.bmp" 3d_load_texture_back 1,chemin$+"sk2.bmp" 3d_load_texture_top 1,chemin$+"sk3.bmp" 3d_load_texture_left 1,chemin$+"sk4.bmp" 3d_load_texture_front 1,chemin$+"sk5.bmp" 3d_load_texture_bottom 1,chemin$+"sk6.bmp" 3d_plane 2:3d_scale 2,1000,1000,1:3d_x_rotate 2,90:3d_y_position 2,-0.25 3d_load_texture 2,chemin$+"herbe.JPG":3d_u_tile 2,400:3d_v_tile 2,400 3d_plane 3:3d_scale 3,42,40,1:3d_x_rotate 3,90:3d_position 3,240,0,230 3d_load_texture 3,chemin$+"terre.jpg":3d_u_tile 3,10:3d_v_tile 3,10
3d_cube 4,1:3d_hide 4:3d_mesh 5:3d_hide 5: ' CRÉATION DES VÉHICULES MOTEUR ET CAMÉRA gosub dbug ' ****************************************************************************** ' **************** CONSTRUCTION DE LA FORTERESSE ************************ ' ****************************************************************************** print_locate screen_x/2-(text_width(txt2$,0)/2),screen_y/2-3*(text_height(txt2$,0)/2):print txt2$ ' LES 8 TOURS 3d_mesh 6:3d_load_object 6,chemin$+"tr.3ds":3d_load_texture 6,chemin$+"tr.jpg" 3d_position 6,240,0,230:3d_scale 6,42,44,32:3d_x_rotate 6,90:3d_z_rotate 6,180 3d_mesh 7:3d_load_object 7,chemin$+"gués.3ds":3d_load_texture 7,chemin$+"gués.bmp" 3d_position 7,240,0,230:3d_scale 7,42,44,32:3d_x_rotate 7,90:3d_z_rotate 7,180 ' les remparts latéraux à l'entrée 3d_box 8,42,72,20:3d_position 8,200,36,-33:3d_y_rotate 8,90:3d_load_texture 8,chemin$+"m1r.jpg" 3d_box 9,42,72,20:3d_position 9,288,36,-33:3d_y_rotate 9,90:3d_load_texture 9,chemin$+"m1r.jpg" ' les blocs remparts aux entrées et à la sortie 3d_box 10,22,72,20:3d_position 10,220,36,-80:3d_load_texture 10,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 11,22,72,20:3d_position 11,260,36,-80:3d_load_texture 11,chemin$+"m8r.jpg": ' rempart latéral pont levis et portes entrée 3d_box 12,21,24,20:3d_position 12,240,60,-80:3d_load_texture 12,chemin$+"m8.jpg": ' bloc au-dessus pont levis et portes entrée 3d_box 13,21,24,20:3d_position 13,240,60,20:3d_load_texture 13,chemin$+"m8.jpg" : ' bloc au-dessus herse 3d_box 14,21,24,20:3d_position 14,240,60,440:3d_load_texture 14,chemin$+"m8.jpg": ' bloc au-dessus portes sortie ' LA HERSE A L'ENTRÉE 3d_mesh 15:3d_position 15,240,-1,13:3d_x_rotate 15,90:3d_scale 15,1,1,1.15 3d_load_object 15,chemin$+"herse.3ds":3d_load_texture 15,chemin$+"herse.bmp" ' LE PONT-LEVIS A L'ENTRÉE 3d_mesh 16:3d_position 16,240,0,-90:3d_x_rotate 16,90:3d_scale 16,1,1,1.1 3d_load_object 16,chemin$+"pntlvs.3ds":3d_load_texture 16,chemin$+"pntlvs.jpg" ' LES PORTES D'ENTRÉE 3d_mesh 17:3d_position 17,227,0,-70:3d_x_rotate 17,90:3d_scale 17,1,1,1.1 3d_load_object 17,chemin$+"porte.3ds":3d_load_texture 17,chemin$+"porte.jpg" 3d_mesh 18:3d_position 18,252,0,-70:3d_x_rotate 18,90:3d_z_rotate 18,180:3d_scale 18,1,1,1.1 3d_load_object 18,chemin$+"porte.3ds":3d_load_texture 18,chemin$+"porte.jpg" ' LES PORTES DE SORTIE 3d_mesh 19:3d_position 19,230,0,442:3d_x_rotate 19,90:3d_scale 19,0.78,0.75,1.1 3d_load_object 19,chemin$+"porte.3ds":3d_load_texture 19,chemin$+"porte.jpg" 3d_mesh 20:3d_position 20,249,0,442:3d_x_rotate 20,90:3d_z_rotate 20,180:3d_scale 20,0.78,0.75,1.1 3d_load_object 20,chemin$+"porte.3ds":3d_load_texture 20,chemin$+"porte.jpg" ' LE PONT-LEVIS A LA SORTIE 3d_mesh 21:3d_position 21,240,0,450:3d_x_rotate 21,90:3d_scale 21,1,1,1.1 3d_load_object 21,chemin$+"pntlvs.3ds": 3d_load_texture 21,chemin$+"pntlvs.jpg" ' LA HERSE A LA SORTIE 3d_mesh 22:3d_position 22,240,-1,446:3d_x_rotate 22,90:3d_scale 22,1,1,1.15 3d_load_object 22,chemin$+"herse.3ds": 3d_load_texture 22,chemin$+"herse.bmp" ' TEXTE 3D LABYRINTH 3d_mesh 23:3d_load_object 23,chemin$+"Labyrinth.3ds":3d_load_texture 23,chemin$+"3d_L1.jpg" 3d_position 23,240,30,-250:3d_x_rotate 23,90:3d_scale 23,30,30,30:3d_z_rotate 23,180:3d_hide 23 ' TEXTE 3D FORT 3d_mesh 24:3d_load_object 24,chemin$+"Fort.3ds":3d_load_texture 24,chemin$+"3d_L1.jpg" 3d_position 24,240,30,-250:3d_x_rotate 24,90:3d_scale 24,30,30,30:3d_z_rotate 24,180:3d_hide 24 ' LE MENU OPTION EN LETTRES 3D AVEC TEXTURES 3d_mesh 25:3d_load_object 25,chemin$+"opt1_oui.3ds":3d_position 25,240,60,-225 3d_mesh 26:3d_load_object 26,chemin$+"opt1_non.3ds":3d_position 26,240,60,-225 3d_mesh 27:3d_load_object 27,chemin$+"opt2_oui.3ds":3d_position 27,240,50,-225 3d_mesh 28:3d_load_object 28,chemin$+"opt2_non.3ds":3d_position 28,240,50,-225 3d_mesh 29:3d_load_object 29,chemin$+"opt3_oui.3ds":3d_position 29,240,40,-225 3d_mesh 30:3d_load_object 30,chemin$+"opt3_non.3ds":3d_position 30,240,40,-225 3d_mesh 31:3d_load_object 31,chemin$+"opt4_oui.3ds":3d_position 31,240,30,-225 3d_mesh 32:3d_load_object 32,chemin$+"opt4_non.3ds":3d_position 32,240,30,-225 for b=25 to 32:3d_load_texture b,chemin$+"3d_L3.jpg":3d_x_rotate b,90 3d_scale b,5,5,5:3d_z_rotate b,180:3d_hide b:next b
print_locate screen_x/2-(text_width(txt3$,0)/2),screen_y/2-1*(text_height(txt3$,0)/2):print txt3$ ' CRÉATION DU HÉROS 3d_mesh 33:3d_load_object 33,chemin$+"pk001.3ds" 3d_mesh 34:3d_load_object 34,chemin$+"pk002.3ds" 3d_mesh 35:3d_load_object 35,chemin$+"pk003.3ds" 3d_mesh 36:3d_load_object 36,chemin$+"pk004.3ds" 3d_mesh 37:3d_load_object 37,chemin$+"pk005.3ds" 3d_mesh 38:3d_load_object 38,chemin$+"pk006.3ds" 3d_mesh 39:3d_load_object 39,chemin$+"pk007.3ds" 3d_mesh 40:3d_load_object 40,chemin$+"pk008.3ds" 3d_mesh 41:3d_load_object 41,chemin$+"pk009.3ds" 3d_mesh 42:3d_load_object 42,chemin$+"pk010.3ds" 3d_mesh 43:3d_load_object 43,chemin$+"pk011.3ds" 3d_mesh 44:3d_load_object 44,chemin$+"pk012.3ds" 3d_mesh 45:3d_load_object 45,chemin$+"pk013.3ds" 3d_mesh 46:3d_load_object 46,chemin$+"pk014.3ds" 3d_mesh 47:3d_load_object 47,chemin$+"pk015.3ds" 3d_mesh 48:3d_load_object 48,chemin$+"pk016.3ds" 3d_mesh 49:3d_load_object 49,chemin$+"pk017.3ds" 3d_mesh 50:3d_load_object 50,chemin$+"pk018.3ds" 3d_mesh 51:3d_load_object 51,chemin$+"pk019.3ds" 3d_mesh 52:3d_load_object 52,chemin$+"pk020.3ds" 3d_mesh 53:3d_load_object 53,chemin$+"pk021.3ds" 3d_mesh 54:3d_load_object 54,chemin$+"pk022.3ds" 3d_mesh 55:3d_load_object 55,chemin$+"pk023.3ds" 3d_mesh 56:3d_load_object 56,chemin$+"pk024.3ds" 3d_mesh 57:3d_load_object 57,chemin$+"pk025.3ds" 3d_mesh 58:3d_load_object 58,chemin$+"pk026.3ds" 3d_mesh 59:3d_load_object 59,chemin$+"pk027.3ds" 3d_mesh 60:3d_load_object 60,chemin$+"pk028.3ds" 3d_mesh 61:3d_load_object 61,chemin$+"pk029.3ds" 3d_mesh 62:3d_load_object 62,chemin$+"pk030.3ds" 3d_mesh 63:3d_load_object 63,chemin$+"pk031.3ds" 3d_mesh 64:3d_load_object 64,chemin$+"pk032.3ds" 3d_mesh 65:3d_load_object 65,chemin$+"pk033.3ds" 3d_mesh 66:3d_load_object 66,chemin$+"pk034.3ds" 3d_mesh 67:3d_load_object 67,chemin$+"pk035.3ds" 3d_mesh 68:3d_load_object 68,chemin$+"pk036.3ds" 3d_mesh 69:3d_load_object 69,chemin$+"pk037.3ds" 3d_mesh 70:3d_load_object 70,chemin$+"pk038.3ds" 3d_mesh 71:3d_load_object 71,chemin$+"pk039.3ds" 3d_mesh 72:3d_load_object 72,chemin$+"pk040.3ds" 3d_mesh 73:3d_load_object 73,chemin$+"pk041.3ds" 3d_mesh 74:3d_load_object 74,chemin$+"pk042.3ds" 3d_mesh 75:3d_load_object 75,chemin$+"pk043.3ds" 3d_mesh 76:3d_load_object 76,chemin$+"pk044.3ds" 3d_mesh 77:3d_load_object 77,chemin$+"pk045.3ds" 3d_mesh 78:3d_load_object 78,chemin$+"pk046.3ds" 3d_mesh 79:3d_load_object 79,chemin$+"pk047.3ds" 3d_mesh 80:3d_load_object 80,chemin$+"pk048.3ds" 3d_mesh 81:3d_load_object 81,chemin$+"pk049.3ds" 3d_mesh 82:3d_load_object 82,chemin$+"pk050.3ds" 3d_mesh 83:3d_load_object 83,chemin$+"pk051.3ds" 3d_mesh 84:3d_load_object 84,chemin$+"pk052.3ds" 3d_mesh 85:3d_load_object 85,chemin$+"pk053.3ds" 3d_mesh 86:3d_load_object 86,chemin$+"pk054.3ds" 3d_mesh 87:3d_load_object 87,chemin$+"pk055.3ds" 3d_mesh 88:3d_load_object 88,chemin$+"pk056.3ds" 3d_mesh 89:3d_load_object 89,chemin$+"pk057.3ds" 3d_mesh 90:3d_load_object 90,chemin$+"pk058.3ds" 3d_mesh 91:3d_load_object 91,chemin$+"pk059.3ds" 3d_mesh 92:3d_load_object 92,chemin$+"pk060.3ds" 3d_mesh 93:3d_load_object 93,chemin$+"pk061.3ds" 3d_mesh 94:3d_load_object 94,chemin$+"pk062.3ds" 3d_mesh 95:3d_load_object 95,chemin$+"pk063.3ds" 3d_mesh 96:3d_load_object 96,chemin$+"pk064.3ds" 3d_mesh 97:3d_load_object 97,chemin$+"pk065.3ds" 3d_mesh 98:3d_load_object 98,chemin$+"pk066.3ds" 3d_mesh 99:3d_load_object 99,chemin$+"pk067.3ds" 3d_mesh 100:3d_load_object 100,chemin$+"pk068.3ds" 3d_mesh 101:3d_load_object 101,chemin$+"pk069.3ds" 3d_mesh 102:3d_load_object 102,chemin$+"pk070.3ds" 3d_mesh 103:3d_load_object 103,chemin$+"pk071.3ds" 3d_mesh 104:3d_load_object 104,chemin$+"pk072.3ds" 3d_mesh 105:3d_load_object 105,chemin$+"pk073.3ds" 3d_mesh 106:3d_load_object 106,chemin$+"pk074.3ds" 3d_mesh 107:3d_load_object 107,chemin$+"pk075.3ds" 3d_mesh 108:3d_load_object 108,chemin$+"pk076.3ds" 3d_mesh 109:3d_load_object 109,chemin$+"pk077.3ds" 3d_mesh 110:3d_load_object 110,chemin$+"pk078.3ds" 3d_mesh 111:3d_load_object 111,chemin$+"pk079.3ds" 3d_mesh 112:3d_load_object 112,chemin$+"pk080.3ds" 3d_mesh 113:3d_load_object 113,chemin$+"pk081.3ds" 3d_mesh 114:3d_load_object 114,chemin$+"pk082.3ds" 3d_mesh 115:3d_load_object 115,chemin$+"pk083.3ds" 3d_mesh 116:3d_load_object 116,chemin$+"pk084.3ds" 3d_mesh 117:3d_load_object 117,chemin$+"pk085.3ds" 3d_mesh 118:3d_load_object 118,chemin$+"pk086.3ds" 3d_mesh 119:3d_load_object 119,chemin$+"pk087.3ds" 3d_mesh 120:3d_load_object 120,chemin$+"pk088.3ds" 3d_mesh 121:3d_load_object 121,chemin$+"pk089.3ds" 3d_mesh 122:3d_load_object 122,chemin$+"pk090.3ds" 3d_mesh 123:3d_load_object 123,chemin$+"pk091.3ds" 3d_mesh 124:3d_load_object 124,chemin$+"pk092.3ds" 3d_mesh 125:3d_load_object 125,chemin$+"pk093.3ds" 3d_mesh 126:3d_load_object 126,chemin$+"pk094.3ds" 3d_mesh 127:3d_load_object 127,chemin$+"pk095.3ds" 3d_mesh 128:3d_load_object 128,chemin$+"pk096.3ds" 3d_mesh 129:3d_load_object 129,chemin$+"pk097.3ds" 3d_mesh 130:3d_load_object 130,chemin$+"pk098.3ds" 3d_mesh 131:3d_load_object 131,chemin$+"pk099.3ds" 3d_mesh 132:3d_load_object 132,chemin$+"pk100.3ds" 3d_mesh 133:3d_load_object 133,chemin$+"pk101.3ds" 3d_mesh 134:3d_load_object 134,chemin$+"pk102.3ds" 3d_mesh 135:3d_load_object 135,chemin$+"pk103.3ds" 3d_mesh 136:3d_load_object 136,chemin$+"pk104.3ds" 3d_mesh 137:3d_load_object 137,chemin$+"pk105.3ds" 3d_mesh 138:3d_load_object 138,chemin$+"pk106.3ds" 3d_mesh 139:3d_load_object 139,chemin$+"pk107.3ds" 3d_mesh 140:3d_load_object 140,chemin$+"pk108.3ds" 3d_mesh 141:3d_load_object 141,chemin$+"pk109.3ds" 3d_mesh 142:3d_load_object 142,chemin$+"pk110.3ds" 3d_mesh 143:3d_load_object 143,chemin$+"pk111.3ds" 3d_mesh 144:3d_load_object 144,chemin$+"pk112.3ds" 3d_mesh 145:3d_load_object 145,chemin$+"pk113.3ds" 3d_mesh 146:3d_load_object 146,chemin$+"pk114.3ds" pk=32 repeat pk=pk+1:3d_load_texture pk,chemin$+"pk.bmp":3d_scale pk,0.25,0.25,0.25 3d_x_rotate pk,90:3d_z_rotate pk,270:3d_hide pk:3d_position pk,240,7,-290 until pk>=146:pk=33
' GARGOYLES 3d_mesh 147:3d_load_object 147,chemin$+"gargoyle.3ds" 3d_scale 147,0.75,0.75,0.75:3d_x_rotate 147,90:3d_y_rotate 147,30 3d_position 147,232,18,20:3d_color 147,0,50,40 3d_mesh 148:3d_load_object 148,chemin$+"gargoyle.3ds" 3d_scale 148,0.75,0.75,0.75 3d_x_rotate 148,90:3d_y_rotate 148,330:3d_z_rotate 148,180 3d_position 148,248,18,20:3d_color 148,0,50,40 ' DRAGONS 3d_box 149,20,5,40:3d_position 149,220,0,-30:3d_load_texture 149,chemin$+"3d_L4.jpg": ' piedestal marbre droit 3d_box 150,20,5,40:3d_position 150,268,0,-30:3d_load_texture 150,chemin$+"3d_L4.jpg": ' piedestal marbre gauche ' dragon 1 droit 3d_mesh 151:3d_load_object 151,chemin$+"dragdroit.3ds":3d_color 151,0,25,15 3d_scale 151,40,40,40:3d_y_rotate 151,150 3d_x_rotate 151,90:3d_position 151,218,2,-30 ' dragon 2 gauche 3d_mesh 152:3d_load_object 152,chemin$+"dragauche.3ds":3d_color 152,0,25,15 3d_scale 152,40,40,40:3d_y_rotate 152,210 3d_x_rotate 152,90:3d_position 152,272,2,-30
' ****************************************************************************** ' **************** CONSTRUCTION DU LABYRINTHE ************************ ' ****************************************************************************** ' CAS 1 = MUR GAUCHE, CAS 2 = MUR ARRIÈRE, CAS 4 = MUR DROIT, CAS 8 = MUR FACE ' LES AUTRES CAS, C'EST UNE ADDITION; EX: CAS 3 = CAS 1 + CAS 2 print_locate screen_x/2-(text_width(txt5$,0)/2),screen_y/2+3*(text_height(txt5$,0)/2):print txt5$ for i=1 to h:a(i,1)=8:next i:for j=1 to v:a(1,j)=1:next j for j=2 to v for i=2 to h: trc(i,j)=0 if (i=(int(h/2)+1) and j=2) then a(i,j)=a(i,j)-8 if (i=(int(h/2)+1) and j=v) then a(i,j)=a(i,j)-2 txt6$=left$(txt6$,33)+str$(i*j)+"..." print_locate screen_x/2-(text_width(txt6$,0)/2),screen_y/2+5*(text_height(txt6$,0)/2):print txt6$
select a(i,j) case 1 gosub pan1 case 2 gosub pan2 case 3 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 case 4 gosub pan4 case 5 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 case 6 gosub pan2:gosub pan4 case 7 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2:gosub pan4 case 8 gosub pan8 case 9 if a(i-1,j)<4 or a(i-1,j)>7 and a(i-1,j)<12 then gosub pan1 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 10 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 11 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan2 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 12 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 13 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then gosub pan1 gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 case 14 gosub pan2:gosub pan4 if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then gosub pan8 end_select next i next j
gosub dbug print_locate screen_x/2-text_width(txt7$,0)/2,screen_y/2+7*text_height(txt7$,0)/2:print txt7$
' ****************************************************************************** ' ****************** CRÉATION DE LA BOUSSOLE ************************ ' ****************************************************************************** scene3d 2:3d_target_is 2:hide 2:width 2,160:height 2,160 left 2,screen_x-180:top 2,screen_y-240:color 2,0,0,0 3d_cylinder number_3d_objects+1,0.25,1,1 3d_load_texture number_3d_objects,chemin$+"étui.jpg" 3d_x_rotate number_3d_objects,90 3d_cylinder number_3d_objects+1,0.26,0.9,0.9 3d_load_texture number_3d_objects,chemin$+"cadran.jpg" 3d_x_rotate number_3d_objects,270 3d_mesh number_3d_objects+1 3d_load_object number_3d_objects,chemin$+"aiguille.3ds" 3d_load_texture number_3d_objects,chemin$+"aiguille.bmp" 3d_x_rotate number_3d_objects,270:3d_y_rotate number_3d_objects,180 bs=number_3d_objects 3d_target_is 1
' ****************************************************************************** ' ** Initialisation position départ et création d'1 timer pour l'intro du jeu ** ' ** Création d'1 second timer pour gèrer les déplacements dans le labyrinthe ** ' ****************************************************************************** i=int(h/2)+1:j=1:dtn=1
' ! INFO: en dessous de 17 le timer_interval 3 est inopérant & le prog ralenti ! timer 3:timer_interval 3,200:on_timer 3,intro timer 4:timer_interval 4,50:on_timer 4,moteur show 1 end
' ****************************************************************************** ' ***************** LE PROGRAMME PRINCIPAL ****************************** ' ****************************************************************************** moteur:
timer_off 4
gosub dbug
if m<>0 gosub music if tpm2-tpm1>60 then tpm1=tpm2:m=m+1:play m:if m>29 then m=26 end_if
if c_espace=1 and opt(2)=27 then gosub trace timer_on 4:tch=scancode:timer_off 4 select tch case 0: ' LE HÉROS EN MOUVEMENT RESTE EN POSITION STATIQUE 3d_hide int(pk):pk=pk+0.25:if pk>130 then pk=33 3d_position int(pk),x,7,z:3d_show int(pk) case 27:gosub fin: ' SORTIE PROGRAMME case 32:c_espace=1: ' AFFICHAGE DU PLAN DU LABYRINTHE case 37:gosub gauche: ' FLECHE GAUCHE = ROTATION A GAUCHE case 39:gosub droite: ' FLECHE DROITE = ROTATION A DROITE case 38: ' FLECHE HAUT = DTN DEFINIT LA DIRECTION NORD, OUEST, SUD OU EST 3d_hide int(pk):pk=131:3d_show pk select dtn case 1 if j < v+1 if a(i,j)=0 or a(i,j)=1 or a(i,j)=4 or a(i,j)=5 or a(i,j)=8 or a(i,j)=9 or a(i,j)=12 or a(i,j)=13 pt=j*20:j=j+1:gd=j*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 2 if i < h and j > 1 if a(i,j)<4 or a(i,j)>7 and a(i,j)<12 pt=i*20:i=i+1:gd=i*20 repeat pt=pt+pas:3d_move 4,pas:gosub pospk:gosub affiche until pt>=gd end_if end_if case 3 if j > 2 if a(i,j)<8 pt=j*20:j=j-1:gd=j*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if case 4 if i > 2 and j > 1 if odd(a(i,j))=0 pt=i*20:i=i-1:gd=i*20 repeat gd=gd+pas:3d_move 4,pas:gosub pospk:gosub affiche until gd>=pt end_if end_if end_select end_select
' MÉMORISATION DE SON PASSAGE PAR DES SPHÈRES ORANGES ==> OPTION PETIT POUCET if opt(1)=25 if trc(i,j)=0 and j>1 3d_sphere number_3d_objects+1,2 3d_position number_3d_objects,i*20,1,j*20 3d_color number_3d_objects,224,128,32 trc(i,j)=number_3d_objects end_if end_if
' ROTATION DU HÉROS DANS LE SENS DU DÉPLACEMENT gosub herodtn
' TEST DE SORTIE DU LABYRINTHE if j=v and i=(int(h/2)+1) and dtn=1 then goto sortie
timer_on 4
return
' ****************************************************************************** ' ********************* LES ROUTINES *********************************** ' ******************************************************************************
' CALCUL DES POSITIONS DES VÉHICULES MOTEUR ET CAMÉRA affiche: 3d_position 5,o3d_x_position(4),o3d_y_position(4),o3d_z_position(4):3d_rotate 5,o3d_x_rotate(4),o3d_y_rotate(4),o3d_z_rotate(4) 3d_move 5,1:cam_position o3d_x_position(4),w,o3d_z_position(4):point_position o3d_x_position(5),13,o3d_z_position(5) return
' CRÉATION DES MURS DU LABYRINTHE pan1: if i=2 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)-20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan2: if j=v 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)+20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)+10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return pan4: if i=h 3d_box number_3d_objects+1,22,72,20:3d_position number_3d_objects,(i*20)+20,36,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)+10,10,(j*20):3d_y_rotate number_3d_objects,90:3d_load_texture number_3d_objects,chemin$+"m1.jpg" end_if return pan8: if j=2 3d_box number_3d_objects+1,20.9,72,20:3d_position number_3d_objects,(i*20),36,(j*20)-20:3d_load_texture number_3d_objects,chemin$+"m8r.jpg" else 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20),10,(j*20)-10:3d_load_texture number_3d_objects,chemin$+"m8.jpg" end_if return
' VISION SATELLITE DU LABYRINTHE EN 3D trace: repeat w=w+pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w>=600
repeat if scancode=27 then gosub fin if scancode=37 then gosub gauche if scancode=39 then gosub droite until scancode=32
repeat w=w-pasv:cam_position o3d_x_position(4),w,o3d_z_position(4):display until w<=13 c_espace=0 return
' ROTATION A GAUCHE gauche: ang=rot+90:dtn=dtn+1:if dtn>4 then dtn=1 repeat rot=rot+6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot>=ang return
' ROTATION A DROITE droite: ang=rot-90:dtn=dtn-1:if dtn<1 then dtn=4 repeat rot=rot-6*pas:3d_y_rotate 4,rot:3d_y_rotate bs,rot+180 if w>13 then gosub pivot gosub affiche until rot<=ang return
' ROTATION DE LA CAMÉRA LORS DE LA VISION SATELLITE pivot: cam_position o3d_x_position(4),o3d_y_position(4)+w,o3d_z_position(4) return ' ROUTINES DE RECHERCHE DES POSITIONS X ET Z DU HÉROS pospk: 3d_hide int(pk):pk=pk+0.25:if pk>146 then pk=131 if int(pk)=138 then play 20 if int(pk)=146 then play 21 gosub herodtn 3d_position int(pk),x,7,z:3d_show int(pk) return
herodtn: if dtn=1 then x=o3d_x_position(4):z=o3d_z_position(4)+5:3d_z_rotate int(pk),270 if dtn=2 then x=o3d_x_position(4)+5:z=o3d_z_position(4):3d_z_rotate int(pk),0 if dtn=3 then x=o3d_x_position(4):z=o3d_z_position(4)-5:3d_z_rotate int(pk),90 if dtn=4 then x=o3d_x_position(4)-5:z=o3d_z_position(4):3d_z_rotate int(pk),180 return
pxz: x=o3d_x_position(int(pk)):z=o3d_z_position(int(pk)) return
' GÉNÉRATION DU LABYRINTHE lab: for j=1 to v+1:a(1,j)=4:a(h+1,j)=1:next j for i=2 to h:a(i,v+1)=8:a(i,1)=2:for j=2 to v:a(i,j)=15:next j:next i r=int(h/2+1):s=int(v/2+1):a(r,s)=15 for k=1 to n r1: i=0 if a(r-1,s)=15 then i=i+1 :c(i)=1 if a(r,s-1)=15 then i=i+1 :c(i)=2 if a(r+1,s)=15 then i=i+1 :c(i)=3 if a(r,s+1)=15 then i=i+1 :c(i)=4 if i=0 then goto r2 if i<>1 then i=int(rnd(i)+1) select c(i) case 1 :a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2):r=r-1:a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4 case 2 :a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8:s=s-1:a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2 case 3 :a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4:r=r+1:a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2) case 4 :a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2:s=s+1:a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8 end_select goto r7 r2: if d=-1 then goto r3 if r<>h then goto r5 if s<>v then goto r4 r=2:s=2:goto r6 r3: if r<>2 then goto r5 if s<>v then goto r4 r=h:s=2: goto r6 r4: s=s+1:d=-1*d:goto r6 r5: r=r+d r6: if a(r,s)=15 then goto r2 goto r1 r7: mur(r,s)=int(rnd(6)+1) if mur(r,s)=mur(r-1,s) or mur(r,s)=mur(r+1,s) or mur(r,s)=mur(r,s-1) or mur(r,s)=mur(r,s+1) then goto r7 next k return
' GESTION DE LA MUSIQUE music: tpm2=(val(left$(time$,2))*3600)+(val(mid$(time$,4,2))*60)+val(right$(time$,2)) return
' ****************************************************************************** ' ****************************************************************************** ' ******************* routine de DEBUGAGE ************************************** ' ****************************************************************************** ' ****************************************************************************** dbug: IF debug =1 CAPTION 501, "number_3d_objects=" + STR$(number_3d_objects) CAPTION 502, "pk=" + STR$(int(pk)) CAPTION 503, "number_objects=" + STR$(number_objects) ' caption 504, "z=" + str$(z) caption 505, "dtn=" + str$(dtn) caption 506, "a(i,j)=" + str$(a(i,j)) caption 507, "a(i,v)=" + str$(a(i,v)) caption 508, "i=" + str$(i) caption 509, "j=" + str$(j) END_IF return
' ****************************************************************************** ' DÉBUT DU JEU --> NOM DU JEU, RÈGLAGE OPTIONS & ENTRÉE DANS LABYRINTHE ' ****************************************************************************** intro: timer_off_all av=180:hrs=-1:prt=360:pk=33:m=26 3d_position 4,((h/2)*20)-(3*odd(h))+20,15,-300:3d_show 23:3d_show 24:3d_show 33 gosub affiche file_load 26,chemin$+"FORT LABYRINTH.mp3":gosub music:tpm1=tpm2:play 26 ' LE NOM DU JEU EN PIERRE TOURNOIE ET LE HÉROS EN MOUVEMENT RESTE STATIQUE while scancode=0 3d_z_rotate 23,av:3d_z_rotate 24,abs(av):av=av-4 3d_hide int(pk):gosub pxz:pk=pk+0.25:if pk>=130 then pk=33 3d_position int(pk),x,7,z:3d_show int(pk) gosub music:if tpm2-tpm1>62 then tpm1=tpm2:play 26 end_while 3d_hide 23:3d_hide 24:av=0 file_load 26,chemin$+"menu.mp3":gosub music:tpm1=tpm2:play 26 ' AFFICHAGE DES OPTIONS DU JEU SOUS FORME DE MENU, LE HÉROS TOUJOURS STATIQUE opt(1)=25:opt(2)=27:opt(3)=30:opt(4)=31:for b=1 to 4:3d_show opt(b):next b:b=1 repeat 3d_hide int(pk):gosub pxz:pk=pk+0.25:if pk>=130 then pk=33 3d_position int(pk),x,7,z:3d_show int(pk) if scancode=27 then gosub fin if scancode=37 or scancode=39 3d_hide opt(b) if even(opt(b))=1 opt(b)=opt(b)-1 else opt(b)=opt(b)+1 end_if end_if if scancode=38 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b-1:if b<1 then b=4 if scancode=40 then 3d_load_texture opt(b),chemin$+"3d_L3.jpg":b=b+1:if b>4 then b=1 3d_load_texture opt(b),chemin$+"3d_L2.jpg":3d_show opt(b) if opt(b)>31 then file_load 26,chemin$+"silence.mp3":play 26:m=0 if (opt(b)=31 and m=0) then file_load 26,chemin$+"menu.mp3":tpm1=tpm2:play 26:m=26 gosub music:if tpm2-tpm1>24.1 then tpm1=tpm2:play 26 until scancode=13 for b=25 to 32:3d_hide b:next b ' LE HÉROS COURT VERS L'ENTRÉE DU LABYRINTHE PENDANT QUE LE PONT-LEVIS, ' LES PORTES ET LA HERSE S'OUVRENT if m>0 then file_load 26,chemin$+"entrée.mp3":gosub music:tpm1=tpm2:play 26 3d_hide int(pk):pk=131:3d_show pk repeat 3d_move 4,0.5:if av<335 then gosub pxz:z=z+0.5:gosub pospk: ' 3d_hide pk:pk=pk+1:if pk>146 then pk=131 ' 3d_position pk,x,7,z:3d_show pk if av=49 then play 25: ' bruitage ouverture pont levis if av>50 and av<140 then 3d_x_rotate 16,av+40: ' MOUVEMENT ouverture DU PONT-LEVIS de l'entrée if av>150 and av<235 then 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt-0.5: ' mouvement rotatif ouverture des portes d'entrée if av=240 then play 23: ' bruitage de la herse qui se lève if av>240 and av<284 then 3d_y_position 15,hrs:hrs=hrs+0.4: ' MOUVEMENT ouverture DE LA HERSE à l'entrée gosub affiche:av=av+0.5 gosub music:if tpm2-tpm1>36.1 then tpm1=tpm2:play 26 until av>=340 3d_hide pk:pk=33:3d_position pk,x,7,z:3d_show pk
' LE HÉROS FAIT 1/2 TOUR gosub gauche:gosub gauche 3d_hide pk:pk=33:3d_position pk,x,7,z-10:3d_show pk ' FERMETURE DES PONT-LEVIS, PORTES ET HERSE av=180:play 24: ' bruitage fermeture pont levis repeat 3d_x_rotate 16,av:av=av-0.3: ' MOUVEMENT fermeture DU PONT-LEVIS de l'entrée until av<=90 repeat 3d_z_rotate 17,prt:3d_z_rotate 18,180-prt:prt=prt+0.5: ' mouvement rotatif fermeture des portes d'entrée until prt>=360 play 22: ' bruitage de la herse qui se baisse repeat 3d_y_position 15,hrs:hrs=hrs-0.4: ' MOUVEMENT fermeture DE LA HERSE à l'entrée until hrs<=-1 ' LE HÉROS REVIENT VERS LA HERSE DE L'ENTRÉE QUI S'EST FERMÉE av=0:3d_hide pk:pk=131:3d_show pk repeat 3d_move 4,0.5:gosub pospk:gosub affiche:av=av+0.5 until av>=20 ' LE HÉROS REFAIT 1/2 TOUR wait 1000:gosub droite:gosub droite timer_on 4 show 2 return ' ****************************************************************************** ' LA SORTIE DU LABYRINTHE sortie: timer_off_all 3d_hide int(pk):pk=33:3d_position pk,x,7,z+5:3d_show pk prt=0:hrs=-1:av=90 repeat 3d_z_rotate 19,prt:3d_z_rotate 20,180-prt:prt=prt+0.5: ' mouvement rotatif ouverture des portes de sortie until prt>=90 repeat 3d_y_position 22,hrs:hrs=hrs+0.5: ' MOUVEMENT ouverture DE LA HERSE à la sortie until hrs>=30 repeat 3d_x_rotate 21,av:av=av-0.5: ' MOUVEMENT ouverture DU PONT-LEVIS de la sortie until av<=0 delete 27:delete 28:delete 29:delete 30 file_load 26,chemin$+"entrée.mp3":play 26 3d_hide int(pk):pk=131:3d_show pk repeat 3d_move 4,0.5:av=av+0.5:gosub affiche:gosub pospk:wait 40 until av>=80 gosub pxz:av=270 while scancode=0 3d_hide pk:pk=pk+1:if pk>130 then pk=34 3d_position pk,x,7,z:3d_show pk:3d_z_rotate pk,wrap_value(av) av=av+3:wait 40 end_while message "BRAVO, VOTRE HÉROS EST SORTI DU LABYRINTHE!":goto quit
' GESTION DU CHAINAGE SUR LE PROGRAMME SUIVANT ICI <----------- ' POUR LA 3ème PARTIE DE L'AVENTURE ' ****************************************************************************** ' LA SORTIE DU PROGRAMME fin: if message_confirmation_yes_no("Voulez-vous vraiment quitter ?")<>1 then return quit: timer_off_all delete 4 delete 3 delete 2 delete 1 if object_exists(30)=1 then delete 30 if object_exists(29)=1 then delete 29 if object_exists(28)=1 then delete 28 if object_exists(27)=1 then delete 27 delete 26 delete 25 delete 24 delete 23 delete 22 delete 21 delete 20 terminate | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Mar 27 Déc 2011 - 7:34 | |
| Bonjour amis panoramiciens, La solution de cosmos est très interressante. Merci à Jicehel. Pour le moment, je vais mettre de coté la suite de ce jeu, parce que pas assez de temps pour me plonger à fond dans ce prog. J'y reviendrais pluis tard quand ma femme sera rentrée du pays. Par contre j'ai trouvé sur le forum un vieux prog, qui ne fonctionne pas ou très mal (plusieurs bugs) que je vais essayer de refaire à ma sauce, bien que j'entrevois d'énormes difficultés à l'horizon. Il faut que je réfléchisse à la façon de procéder et de poser le problème. Je ne sais pas si je vais y arriver! Il va falloir que j'utilise des instructions que je ne connais pas bien encore. Mais c'est une occasion d'apprendre. Bon courage et bonne programmation à tous! | |
| | | Invité Invité
| Sujet: Re: FORT LABYRINTH Mar 27 Déc 2011 - 12:50 | |
| Bonjour. Est-ce que l'un d'entre-vous peut essayer le programme dont j'ai parlé plus haut pour ralentir l'exécution. J'ai une machine trop lente pour l'inclure dans un jeu. - Spoiler:
Voir le Fichier : compte_a_rebours_processeur.7z - Code:
-
' teste de sortie de temps label teste , fin dim a ' ======= obligatoire au début pour initialiser Autoit ===== caption 0,"PanoPano_Autoit" : ' provisoir pour Autoit edit 1 :text 1,"cliquez sur la forme pour démarrer" : ' caption 0 à afficer ensuite execute "C:\TESTE\OUTILS_DEBOGAGE\compte_a_rebours_processeur.exe" wait 200 ' ======= fin des obligations =====
memo 2:top 2,50: left 2,200: print_target_is 2 on_close 0,fin on_click 0,teste end ' ============== ' ce n'est pas un wait, car le temps est décompté dès que le message est passé. teste: for a=1 to 10 ' mettre la commande "sleep:" + le temps en milli-secondes text 1,"sleep:10":' envoi un temps d'attente de x milli-secondes et compte à rebours print a repeat : until text$(1)="sortie" or scancode = 27 text 1,"" :wait 2 next a message "terminé" goto fin return
fin: text 1,"commande_exit" :' ferme autoit wait 1000 :' laisser un peu de temps, qu'Autoit lit le message terminate
J'ai simplement fais une boucle for/next pour voir si ça fonctionné. |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Mar 27 Déc 2011 - 15:02 | |
| J'essayerais ce soir quand je squatterais un peu l'ordi de mon beau-père. Pour le moment, sur mon portable, inutile de ralentir... | |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 13:28 | |
| J'essaierais ce fort bientôt, car j'ai fort à faire (en ce moment) Pour ce qui est de la possibilité de changer de vitesse de jeu, tu peu proposer ça par une option sur ton jeu au lieu que ce soit l'utilisateur qui bidouille le code Parce que de toutes façons un jeu propose souvent une partie options dans son menu, tu pourras le mettre là. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 13:35 | |
| Oui, mais l'idée, surtout serait d'avoir une vitesse identique (dans la mesure des pssibilité des ordis bien sûr) pendant l'execution du jeu. L'idée, serait d'avoir un niveau d'abstraction permettant de ne pas tenir compte de la puissance de la machine pour faire le programme, d'avoir une fonction qui affiche juste + ou - d'images selon les performances. Sinon, il faut utiliser un timer pour afficher les frames (solution classique en Panoramic).
En fait quand j'y réfléchi bignono, je pense que ce serait la solution (le timer pour afficher les images et un timer qui fasse que si un certain temps s'est écoulé depuis l'affichage de la dernière frame, on passe directement à la nème frame après la courante), mais je n'ait pas d'y que c'était simple à faire ^^
| |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 14:38 | |
| Oui tu as raison bien sûr Jicehel, mais je pensais juste dans mon idée, en attendant la modif. Dans les 90 beaucoup de jeux modernes proposaient une option au cas où ils avaient un pc lent et inversement car cette époque était située entre les deux périodes anciennes et modernes des jeux et du matériel. Comme solution de dépannage ça peut passer, mais je comprends qu'il vaille mieux LA solution à cette vitesse, et là ne connaissant pas les méandres de Panoramic je ne vois pas oO
Je me demandais, je ne sais pas si l'horloge interne est construite à partir d'un quartz, mais il me semble que si en fait d'après un souvenir, j'ai un doute, car dans ce cas, le quartz gardant sa précision du moment qu'il est bien alimenté, son horloge interne doit être juste et donc il faudrait pouvoir s'en servir comme référence.
| |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 15:58 | |
| Bonjour Jicehel, Oui, utiliser un timer pour le défilement des frames serait peut-être la solution! J'y avais pensé, mais je n'ai pas le temps pour le moment de me replonger dans ce prog, je suis absorbé par un autre programme plus complexe sous de nombreux aspects. Mais dès que ce programme est terminé, j'essaye de me replonger dans FORT LABYRINTH! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 16:09 | |
| Cool, par ce que ton programme est prometteur, dommage que les champions de la 3D n'y jette pas un oeil pour t'aider à l'optimiser (Perso, c'est plutôt moi qui apprend avec ce que tu fais, puisque moi, en 3D je n'y connaissait vraiment pas grand chose et ne serait-ce que remettre une texture sur un objet, pour moi, ce n'est pas gagné ... ) Tu devrais nous en dire plus sur ton projet actuel, ça fait un moment que tu sous entend que tu bosse sur un gros trucs, mais ma curiosité n'est pas assouvie !! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 19:14 | |
| Bonsoir Jicehel, Content de savoir que tu apprends la 3d grace à moi, mais tu m'as beaucoup aidé sur le sujet du labyrinthe aussi. Mais comme tu dis, c'est malheureux que les champions de la 3d ne me donnent pas un coup de main pour optimiser le code! Je les pardonne, ils sont surement occupés sur leur programme. Par contre je ne peux pas dire pour l'instant sur quoi je travaille. Désolé, top secret. Bon je retourne à mon programme, car je ne peux pas rester toute la journée à surveiller le forum. A +. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 23:17 | |
| Comptez pas trop sur moi pour la partie 3D: je maitrise autant qu'une enclume peut voler... | |
| | | exdragon
Nombre de messages : 601 Date d'inscription : 05/01/2012
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 23:20 | |
| Moi aussi il me rend service, quand j'aurais besoin de 3D je pourrais trifouiller dans ce programme pour apprendre | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Lun 9 Jan 2012 - 23:46 | |
| Je ne pensais pas à toi Nardo Toi, on sait que ce n'est pas ton domaine, tu serais plutôt le fils spirituel de Klaus Mais bon, on a des bons en 3D qui passent de temps à autres, dommage qu'ils ne soient plus assidus, ce serait bien qu'ils fassent quelques trucs sympas. Jack a déjà mis dans Panoramic de quoi bien s'éclater avec la 3D et les versions à venir promettent aussi. Quand on a quelqu'un qui fait un prog plutôt avancé comme tu as fait, c'est dommage qu'ils n'en profite pas pour améliorer cet univers 3D. D'autant que si l'on relit un peu les forums, certains ont commencés comme toi mais on arrêté soudainement sans doute faute de soutient. Perso, j'aime bien que certains fasse des utilitaires, d'autres des jeux 2D, d'autres 3D, certains des DLL qui apportent des fonctions inexistantes à ce jour dans Panoramic et qui mériterait de figurer dans la page principale de Panoramic comme la DLL permettant d'utiliser le port parallèle selon moi, d'autres encore adaptant Panoramic pour mettre en pratique les grands classiques de la programmation, ou des mathématiques appliqués. Tout cela est complémentaire et permet de s'intéresser à autre chose que ce que l'on fait. Bien sûr, ça fait perdre un peu de temps sur ses propres projets, mais c'est enrichissant et sa permet à une communauté d'acharnés de cohabiter et de s'enrichir mutuellement de leurs expériences et de leur vision des choses. Bon aller, j'ai assez spammé, je vais essayer de programmer un peu ce soir | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: FORT LABYRINTH Ven 20 Jan 2012 - 13:08 | |
| Bonjour amis panoramiciens, Je me dois quand même de vous dire sur quoi je travaille actuellement. C'est un utilitaire, un utilitaire pour la 3d! Il se présente comme un logiciel de 3d, mais s'en est pas un, loin de là! Il ne me reste plus que 2 fonctions à coder (ouvrir et enregistrer), après, je ferais des tests poussés pour détecter d'éventuels bugs! Le code n'est pas optimisé, et je ne l'optimiserais pas, car il est bâti comme des petits programmes pour chaque fonction où tout le monde pourra piocher pour ses besoins personnels. Ce petit logiciel vous permettra de concevoir un décor en 3d, d'y implanter des mesh avec leurs textures, de vous positionner où vous voulez dans le décor avec la fonction se déplacer, de règler la lumière, de cacher certains objets, de les positionner, de les tourner, les texturer ou colorer, les déformer comme bon vous semblera. J'ai également coder une fonction qui vous génèrera le code panoramic directement dans un mémo où l'on pourra le sélectionner et le copier pour le coller dans l'éditeur, ou alors vous pourrez directement l'enregistrer en .bas pour l'ouvrir avec l'éditeur. Vous pourrez également prendre une photo de la scène et l'enregistrer. Je vous joins ci dessous juste le code du menu pour que vous vous rendiez compte de mon travail depuis près d'un mois. Et je remercie particulièrement ceux qui m'ont aidé quand j'avais des problèmes de codages de certaines fonctions. J'espère poster le programme complet dans à peu près 15 jours si tout va bien. Si vous avez des questions, j'essayerai d'y répondre. Merci d'avance de votre attention et à + - Code:
-
label code,propos,nouveau,ouvrir,sauver,quitter label skbox,plane,actor,mesh,box,cone,cube,cylind,dodeca,line,sphere,texte,torus label deplacer,taille,rotation,transpar,textur,montrcach,supprimer label lumiere,axes,cliche,evolue
main_menu 12 ' les sous-menus sub_menu 13:parent 13,12:caption 13,"Fichier" sub_menu 14:parent 14,12:caption 14,"Objets 3d" sub_menu 15:parent 15,12:caption 15,"Commandes" sub_menu 16:parent 16,12:caption 16,"Vues" sub_menu 17:parent 17,12:caption 17,"Générer Code" :on_click 17,code sub_menu 18:parent 18,12:caption 18,"A propos" :on_click 18,propos ' objet 19 Libre réservé pour extension du menu --> Aide
' sous-menu Fichier sub_menu 20:parent 20,13:caption 20,"Nouveau" :on_click 20,nouveau sub_menu 21:parent 21,13:caption 21,"Ouvrir" :on_click 21,ouvrir :' à faire sub_menu 22:parent 22,13:caption 22,"Enregistrer" :on_click 22,sauver sub_menu 23:parent 23,13:caption 23,"Quitter" :on_click 23,quitter
' sous-menu Objets 3d sub_menu 24:parent 24,14:caption 24,"3d_skybox" :on_click 24,skbox sub_menu 25:parent 25,14:caption 25,"3d_plane" :on_click 25,plane sub_menu 26:parent 26,14:caption 26,"3d_actor" :on_click 26,actor sub_menu 27:parent 27,14:caption 27,"3d_mesh" :on_click 27,mesh sub_menu 28:parent 28,14:caption 28,"3d_box" :on_click 28,box sub_menu 29:parent 29,14:caption 29,"3d_cone" :on_click 29,cone sub_menu 30:parent 30,14:caption 30,"3d_cube" :on_click 30,cube sub_menu 31:parent 31,14:caption 31,"3d_cylinder" :on_click 31,cylind sub_menu 32:parent 32,14:caption 32,"3d_dodecahedron":on_click 32,dodeca sub_menu 33:parent 33,14:caption 33,"3d_line" :on_click 33,line sub_menu 34:parent 34,14:caption 34,"3d_sphere" :on_click 34,sphere sub_menu 35:parent 35,14:caption 35,"3d_text" :on_click 35,texte sub_menu 36:parent 36,14:caption 36,"3d_torus" :on_click 36,torus
' sous-menu Commandes sub_menu 37:parent 37,15:caption 37,"Position" :on_click 37,deplacer sub_menu 38:parent 38,15:caption 38,"Taille" :on_click 38,taille sub_menu 39:parent 39,15:caption 39,"Rotation" :on_click 39,rotation sub_menu 40:parent 40,15:caption 40,"Apparence" :on_click 40,transpar sub_menu 41:parent 41,15:caption 41,"Texture" :on_click 41,textur sub_menu 42:parent 42,15:caption 42,"Cacher/Montrer" :on_click 42,montrcach sub_menu 43:parent 43,15:caption 43,"Supprimer" :on_click 43,supprimer
' sous-menu Vues sub_menu 44:parent 44,16:caption 44,"Lumière" :on_click 44,lumiere sub_menu 45:parent 45,16:caption 45,"Axes" :on_click 45,axes sub_menu 46:parent 46,16:caption 46,"Cliché" :on_click 46,cliche sub_menu 47:parent 47,16:caption 47,"Se déplacer" :on_click 47,evolue
end
code: propos: nouveau: ouvrir: sauver:
skbox: plane: actor: mesh: box: cone: cube: cylind: dodeca: line: sphere: texte: torus:
deplacer: taille: rotation: transpar: textur: montrcach: supprimer:
lumiere: axes: cliche: evolue: return
quitter: terminate | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: FORT LABYRINTH Ven 20 Jan 2012 - 13:19 | |
| Wait and see ! mais ça promet ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: FORT LABYRINTH Ven 20 Jan 2012 - 14:05 | |
| Hé bien !!!! j'aurais pas dit mieux. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: FORT LABYRINTH Ven 20 Jan 2012 - 14:08 | |
| Je testerais ça se soir ou demain, le descriptif que tu en fait me parait super interessant ^^. Je te fais un retour et te donne mes idées sur le programme dès que je l'ai testé | |
| | | jpcr
Nombre de messages : 276 Age : 57 Localisation : Val de Marne (94) Date d'inscription : 06/05/2011
| Sujet: Re: FORT LABYRINTH Ven 20 Jan 2012 - 14:37 | |
| cool Bignono, tu fourniras aussi une doc ou un site web de référence? jp | |
| | | Contenu sponsorisé
| Sujet: Re: FORT LABYRINTH | |
| |
| | | | FORT LABYRINTH | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |