#include "fxlib.h"
#include "stdio.h"
unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];
int AddIn_main(int isAppli, unsigned short OptionNum){
Bdisp_AllClr_DDVRAM();
demmarage();
identif();
return 1;
}
demmarage(){
int key;
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
Bdisp_DrawLineVRAM(10,10,10,50);
Bdisp_DrawLineVRAM(10,50,117,50);
Bdisp_DrawLineVRAM(117,50,117,10);
Bdisp_DrawLineVRAM(10,10,117,10);
Bdisp_DrawLineVRAM(10,10,63,25);
Bdisp_DrawLineVRAM(117,10,63,25);
locate(7,5);
Print("Messagerie");
do{
GetKey(&key);
} while(key != 30004);
Bdisp_AllClr_DDVRAM();
}
identif(){
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print("Identifiant:");
locate(1,2);
Print("+------------------+");
locate(1,3);
Print("| |");
locate(1,4);
Print("+------------------+");
remplichaine();
caractere2=0;
do{
caractere2++;
ident[caractere2] = chaine[caractere2];
} while(caractere2+1 != caractere);
========================== > ICI < ========
locate(2,3);
Print(ident);
do{
GetKey(&key);
} while(key != 30004);
}
remplichaine(){
caractere=0;
do{
caractere++;
======================= > ET ICI < ========
locate(2,3);
Print(chaine);
GetKey(&key);
//==========Conversion==========
if (key==48)key= 71;
if (key==46)key= 61;
if (key==15)key= 51;
if (key==135)key= 41;
if (key==30004)key= 31;
if (key==49)key= 72;
if (key==50)key= 62;
if (key==51)key= 52;
if (key==137)key= 42;
if (key==153)key= 32;
if (key==52)key= 73;
if (key==53)key= 63;
if (key==54)key= 53;
if (key==169)key= 43;
if (key==185)key= 33;
if (key==55)key= 74;
if (key==56)key= 64;
if (key==57)key= 54;
if (key==30025)key= 44;
if (key==30015)key= 34;
if (key==187)key= 75;
if (key==30046)key= 65;
if (key==40)key= 55;
if (key==41)key= 45;
if (key==44)key= 35;
if (key==14)key= 25;
if (key==30001)key= 76;
if (key==149)key= 66;
if (key==133)key= 56;
if (key==129)key= 46;
if (key==130)key= 36;
if (key==131)key= 26;
if (key==30007)key= 77;
if (key==205)key= 67;
if (key==168)key= 57;
if (key==30002)key= 47;
if (key==30023)key= 37;
if (key==30021)key= 27;
if (key==30006)key= 78;
if (key==30008)key= 68;
if (key==30016)key= 58;
if (key==30020)key= 38;
if (key==30018)key= 28;
if (key==30009)key= 79;
if (key==30010)key= 69;
if (key==30011)key= 59;
if (key==30012)key= 49;
if (key==30013)key= 39;
if (key==30014)key= 29;
//==============================
if(key==31)caractere=19;
if(key==76)chaine[caractere]='a';
if(key==66)chaine[caractere]='b';
if(key==56)chaine[caractere]='c';
if(key==46)chaine[caractere]='d';
if(key==36)chaine[caractere]='e';
if(key==26)chaine[caractere]='f';
if(key==75)chaine[caractere]='g';
if(key==65)chaine[caractere]='h';
if(key==55)chaine[caractere]='i';
if(key==45)chaine[caractere]='j';
if(key==35)chaine[caractere]='k';
if(key==25)chaine[caractere]='l';
if(key==74)chaine[caractere]='m';
if(key==64)chaine[caractere]='n';
if(key==54)chaine[caractere]='o';
if(key==73)chaine[caractere]='p';
if(key==63)chaine[caractere]='q';
if(key==53)chaine[caractere]='r';
if(key==43)chaine[caractere]='s';
if(key==33)chaine[caractere]='t';
if(key==72)chaine[caractere]='u';
if(key==62)chaine[caractere]='v';
if(key==52)chaine[caractere]='w';
if(key==42)chaine[caractere]='x';
if(key==32)chaine[caractere]='y';
if(key==71)chaine[caractere]='z';
if(key==61)chaine[caractere]='.';
if(key==57)chaine[caractere]='@';
} while(caractere!=19);
if(key==31)chaine[caractere]='\0';
if(key!=31)chaine[caractere+1]='\0';
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Citer : Posté le 13/02/2014 18:19 | #
Je sais pour les Arguments mismatch, y'a aucun soucis, c'est juste le SDK qui bug
Citer : Posté le 13/02/2014 20:59 | #
Le choix de la police ?
Tu veux dire entre les deux tailles de police du système ?
J'y avais pensé mais je me suis demandé s'il n'y aurait pas des incompatibilités car tous les caractères ne peuvent pas être affichés dans les deux polices
Citer : Posté le 13/02/2014 21:00 | #
non, je met ma police perso, et donc je peux la choisir
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 13/02/2014 21:36 | #
* regarde la vidéo du projet *
Ah oui, maintenant je vois.
Codée directement en hexa je suppose
Citer : Posté le 13/02/2014 21:41 | #
en fait celle la je l'ai récupérée de l'utilitaire édit, et il a stocké un caractère par unsigned int, et puis il affiche avec une fonction de sprite
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 13/02/2014 21:54 | #
* consulte la page d'edit *
Il faudra que je jette un coup d'oeil au code source.
Même si je me doute bien que ce ne sont pas des polices vectorielles
Citer : Posté le 13/02/2014 22:01 | #
nope, c'est des polices sprite par sprite. En même temps, sur un écran aussi pixelisé, c'est le meilleur moyen d'avoir un bon rendu.
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 19/02/2014 12:40 | # | Fichier joint
Encore un petit problème sur un nouveau programme. C'est un Tron et quand je lui demande d'afficher la grille, il me double l'affichage de la grille lorsque un des 2 joueurs arrive a une extrémité du plateau ... (Je met une image parce que je pense que je l'ai très mal expliqué
#include "Tron.h"
#include "MonochromeLib.h"
#include <stdio.h>
#include <stdlib.h>
FONTCHARACTER filename[]={'\\','\\','f','l','s','0','\\','t','r','o','n','r','.','t','x','t',0};
int x, choix, x_J1, x_J2, y_J1, y_J2;
int acc_y_J1, acc_y_J2, acc_x_J1, acc_x_J2;
int vitesse, nbrJoueur, niveauOrdi, handle;
int key, Tmenu;
char affichage[100];
char plateau[127][54];
int AddIn_main(int isAppli, unsigned short OptionNum)
{
Bdisp_AllClr_DDVRAM();
demmarage();
choix=0;
do{
choix = menu();
if(choix==1) jeu();
if(choix==2) reglages();
Bdisp_PutDisp_DD();
}while(choix!=3);
quitter();
}
// ======= Fonctions Prncipales =============
// A Faire !
void jeu(){
int w=0;
Bdisp_AllClr_DDVRAM();
locate(8,1);
Print("Tron");
Bdisp_DrawLineVRAM(1,8,127,8);
initialisation_plateau();
lectureReglage();
acc_y_J1 = acc_y_J2 = 0;
acc_x_J1 = -1;
acc_x_J2 = 1;
x_J1 = 126;
x_J2 = 2;
y_J1 = y_J2 = 34;
Bdisp_PutDisp_DD();
SaveDisp(SAVEDISP_PAGE1);
Tmenu=0;
do{
Bdisp_AllClr_DDVRAM();
RestoreDisp(SAVEDISP_PAGE1);
affichage_grille();
Bdisp_SetPoint_VRAM(x_J1,y_J1,1);
Bdisp_SetPoint_VRAM(x_J2,y_J2,1);
sprintf(affichage,"%d-%d",x_J2,y_J2);
PrintXY(0,0,affichage,0);
Bdisp_PutDisp_DD();
plateau[x_J1][y_J1-9]=1;
plateau[x_J2][y_J2-9]=1;
x_J1 += acc_x_J1;
x_J2 += acc_x_J2;
y_J1 += acc_y_J1;
y_J2 += acc_y_J2;
/* Aide affichage code touche
sprintf(affichage,"%d",key);
PrintXY(1,1,affichage,0);
GetKey(&key);
*/
// Deplacements J1
if(IsKeyDown(30018) && y_J1>8 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=-1;
if(IsKeyDown(30023) && y_J1<63 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=1;
if(IsKeyDown(30020) && x_J1>0 && acc_y_J1!=0) acc_x_J1=-1, acc_y_J1=0;
if(IsKeyDown(30021) && x_J1<127 && acc_y_J1!=0) acc_x_J1=1, acc_y_J1=0;
// Mise en pause
if(IsKeyDown(30002)) pause();
// Deplacements J2
if(nbrJoueur==2){
if(IsKeyDown(30018) && y_J1>8 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=-1;
if(IsKeyDown(30023) && y_J1<63 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=1;
if(IsKeyDown(30020) && x_J1>0 && acc_y_J1!=0) acc_x_J1=-1, acc_y_J1=0;
if(IsKeyDown(30021) && x_J1<127 && acc_y_J1!=0) acc_x_J1=1, acc_y_J1=0;
}
// Sinon Ordi
else{
// Ordi niveau 1
if(niveauOrdi==1){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==127)){
if(acc_y_J2==0) acc_x_J2=0, acc_y_J2=1;
else acc_y_J2=0, acc_x_J2=1;
}
}
// Ordi niveau 2
if(niveauOrdi==2){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==126)){
w=0;
if(acc_y_J2==0){
if(plateau[x_J2][y_J2-8]==1) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
w=1;
}
if(acc_x_J2==0 && w==0){
if(plateau[x_J2-1][y_J2]==1) acc_x_J2=1, acc_y_J2=0;
else acc_x_J2=-1, acc_y_J2=0;
}
}
}
// Ordi niveau 3 !!!!!!!!!!!! A FAIRE !!!!!!!!!!!!
if(niveauOrdi==3){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==127)){
if(acc_y_J2==0){
if(plateau[x_J2][y_J2-8]==1) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
}
else{
if(plateau[x_J2-1][y_J2]==1) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
}
}
}
}
// Test de collision !!!!!!! A FAIRE !!!!!!!!!
Sleep(10*(10-vitesse));
}while(Tmenu==0 && y_J1>=9 && y_J2>=9 && y_J1<64 && y_J2<64 && x_J1>=1 && x_J2>=1 && x_J1<128 && x_J2<128);
}
// Fini !
void reglages(){
Bdisp_AllClr_DDVRAM();
x=20;
choix=1;
locate(6,1);
Print("+ Reglages +");
Bdisp_DrawLineVRAM(1,8,127,8);
PrintMini(20,20,"Vitesse:",0);
PrintMini(20,30,"Nbr. Joueur:",0);
PrintMini(20,40,"Niv. Ordi:",0);
PrintMini(20,55,"Retour",0);
lectureReglage();
do{
PrintXY(10,x,">",0);
PrintMini(80,30," ",0);
if(nbrJoueur==1){
PrintMini(80,30," 1J ",0);
PrintMini(95,30," 2J ",3);
}
else{
PrintMini(80,30," 1J ",3);
PrintMini(95,30," 2J ",0);
}
sprintf(affichage,"%d",vitesse);
PrintMini(92,20,affichage,0);
sprintf(affichage,"%d",niveauOrdi);
PrintMini(92,40,affichage,0);
GetKey(&key);
PrintXY(10,x," ",0);
Bdisp_PutDisp_DD();
if(key==30023) choix++;
if(key==30018) choix--;
if(choix==1){
if(key==30020 && vitesse!=0) vitesse--;
if(key==30021 && vitesse!=9) vitesse++;
}
if(choix==2){
if(key==30020) nbrJoueur=1;
if(key==30021) nbrJoueur=2;
}
if(choix==3){
if(key==30020 && niveauOrdi!=1) niveauOrdi--;
if(key==30021 && niveauOrdi!=3) niveauOrdi++;
}
if(choix==0) choix=4;
if(choix==5) choix=1;
if(choix==1) x=20;
if(choix==2) x=30;
if(choix==3) x=40;
if(choix==4) x=55;
}while(key!=30004 || choix!=4);
ecritureReglage();
}
// Fini !
int menu(){
Bdisp_AllClr_DDVRAM();
x=20;
choix=1;
locate(6,1);
Print("Tron 1960");
Bdisp_DrawLineVRAM(1,8,127,8);
PrintXY(20,20,"Jouer",0);
PrintXY(20,30,"Reglages",0);
PrintXY(20,45,"Quitter",0);
PrintXY(10,20,">",0);
do{
GetKey(&key);
PrintXY(10,x," ",0);
Bdisp_PutDisp_DD();
if(key==30023) choix++;
if(key==30018) choix--;
if(choix==0) choix=3;
if(choix==4) choix=1;
if(choix==1) x=20;
if(choix==2) x=30;
if(choix==3) x=45;
PrintXY(10,x,">",0);
}while(key!=30004);
return choix;
}
// ======= Fonctions Complementaires ========
// Demmarage
void demmarage(){
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
if(handle== -1){
Bfile_CreateFile(filename, 8);
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
vitesse=1;
nbrJoueur=1;
niveauOrdi=1;
ecritureReglage();
locate(1,1);
Print("Un fichier a ete cree");
locate(6,2);
Print("tronr.txt");
locate(1,3);
Print(" Merci de ne pas le");
locate(1,4);
Print("supprimer.");
locate(5,6);
Print("Press [ExE]");
do{
GetKey(&key);
}while(key!=30004);
}
lectureReglage();
}
// Quitter
void quitter(){
Bfile_CloseFile(handle);
Bdisp_AllClr_DDVRAM();
locate(8,4);
Print("Bye :)");
Bdisp_PutDisp_DD();
Sleep(1000);
}
// Affiche le plateau
void affichage_grille(){
int a=0;
int b=0;
for(a=0;a<127;a++){
for(b=0;b<55;b++){
if(plateau[a][b]==1) Bdisp_SetPoint_VRAM(a,b+9,1);
else Bdisp_SetPoint_VRAM(a,b+9,0);
}
}
}
// Initialise a 0 les cases du plateau
void initialisation_plateau(){
int a, b;
for(a=0;a<127;a++){
for(b=0;b<54;b++){
plateau[a][b]=0;
}
}
}
// Generation d'un nombre aleatoire
int random(int max){
static unsigned int seed = 0x12345678;
if(max<1)seed=-max;
seed = (0x41C64E6D * seed) + 0x3039;
if(max>0)return ((seed >> 16) % max);
}
// Mise en pause
void pause(){
ML_rectangle(1,9,127,63,0,0,3);
ML_rectangle(45, 25, 85, 40,1,1,0);
PrintXY(50,30,"PAUSE",0);
Bdisp_PutDisp_DD();
Sleep(500);
do{
GetKey(&key);
}while(key!=30002 && key!=30008);
PrintXY(50,30," ",0);
if(key==30008) Tmenu=1;
else{
for(x=3;x>=1;x--){
sprintf(affichage," %d ",x);
PrintXY(50,30,affichage,0);
Bdisp_PutDisp_DD();
Sleep(1000);
}
}
}
//======== Fonctions pour le fichier ========
// Lecture des reglages
void lectureReglage(){
char buffer[7];
Bfile_ReadFile(handle,buffer,7,0);
if(buffer[2]=='1') nbrJoueur=1;
else nbrJoueur=2;
switch(buffer[0]){
case '1': vitesse=1;
break;
case '2': vitesse=2;
break;
case '3': vitesse=3;
break;
case '4': vitesse=4;
break;
case '5': vitesse=5;
break;
case '6': vitesse=6;
break;
case '7': vitesse=7;
break;
case '8': vitesse=8;
break;
case '9': vitesse=9;
break;
case '0': vitesse=0;
break;
}
switch(buffer[4]){
case '1': niveauOrdi=1;
break;
case '2': niveauOrdi=2;
break;
case '3': niveauOrdi=3;
break;
case '4': niveauOrdi=4;
break;
case '5': niveauOrdi=5;
break;
case '6': niveauOrdi=6;
break;
case '7': niveauOrdi=7;
break;
case '8': niveauOrdi=8;
break;
case '9': niveauOrdi=9;
break;
case '0': niveauOrdi=10;
break;
}
}
// Ecriture des reglages
void ecritureReglage(){
char buffer[7];
sprintf(buffer,"%d+%d+%d+-",vitesse,nbrJoueur,niveauOrdi);
Bfile_CloseFile(handle);
Bfile_DeleteFile(filename);
Bfile_CreateFile(filename, 8);
handle = Bfile_OpenFile(filename,_OPENMODE_READWRITE);
Bfile_WriteFile(handle,buffer,7);
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum){return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
#pragma section
Sur l'image, les deux chiffre en haut a gauche sont les coordonnées du joueur 2. Les encadrements en rouge sont les endroits de l'erreur
Citer : Posté le 19/02/2014 18:44 | #
N'hésite surtout pas à nous fournir de plus amples explications
Dans quelle fonction ?
Si tu as une idée, où dans le code ?
Et si tu avais un bitmap, ce serait plus explicite.
Parce que là...
Citer : Posté le 19/02/2014 19:06 | #
C'est soit dans la fonction "jeu" ou dans la fonction "affichage grille"
En très gros, la Calto pense qu'il y a des 1 dans le plateau (tableau de int) alors qu'il n'est pas sensé y en avoir.
Du coup elle m'allume des pixels et ça se produit quand le x_J1 ou le x_J2 (position sur x du joueur) d'un des joueurs est a l’extrémité du haut soit x_J=9 (comme sur l'image le carré rouge du haut). S'affiche alors un symétrique non-voulu a l'autre extrémité, le bas de l’écran (le deuxième carré rouge) qui est loin d’être voulu...
Bon je sais pas si je suis plus clair mais c'est quand même pas facile a expliquer
Citer : Posté le 19/02/2014 20:30 | #
C'est déjà mieux, merci
Bon, je vais regarder ça maintenant, ça pourrait être bien
Ajouté le 19/02/2014 à 20:36 :
Bon, premier truc louche que je vois:
Et dans la fonction affichage_grille():
Autrement dit, jusqu'à tab[a][54] alors que tu devrais t'arrêter à tab[a][53] !
Ça pourrait suffire pour créer ton bug s'il n'y a qu'une ligne répétée.
Sans parler des problèmes d'optimisation...
Ajouté le 19/02/2014 à 20:53 :
Là je ne comprend pas tout:
y_J1 += acc_y_J1;
if(IsKeyDown(30018) && y_J1>8 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=-1;
Si y_J1 (c'est valable pour y_J2 aussi) égal 9, alors ça passe. acc_y_J1 prend la valeur -1.
Ensuite plateau[x_J1][y_J1-9] = plateau[x_J1][0] prend la valeur 1.
y_J1 diminue de 1, donc devient 8.
Et alors c'est le while de fin qui arrête le tout ? Je ne suis pas trop sûr...
Par contre j'aimerais savoir pourquoi dans:
if(nbrJoueur==2){
if(IsKeyDown(30018) && y_J1>8 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=-1;
if(IsKeyDown(30023) && y_J1<63 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=1;
if(IsKeyDown(30020) && x_J1>0 && acc_y_J1!=0) acc_x_J1=-1, acc_y_J1=0;
if(IsKeyDown(30021) && x_J1<127 && acc_y_J1!=0) acc_x_J1=1, acc_y_J1=0;
}
ce sont les coordonnées du J1 qui sont utilisées pour les déplacements du J2 ?
Citer : Posté le 19/02/2014 22:11 | #
Que signifie IsKeyDown(30018) 0_0.
Moi j'utilise IsKeyDown(KEY_CTRL_nom de la touche).
Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Super Mario 3
warrior
Jump Ball
First Fly
►Jeu gagnant des 48h CPC n°12◄
Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
Citer : Posté le 19/02/2014 22:14 | #
Il faut connaîre les codes des touches
En gros:
UP: 30018
LE: 30020
RI: 30021
DO: 30023
EXE: 30004
EXIT: 30002
Je te passe le reste, pas très intéressant de toute manière
Citer : Posté le 19/02/2014 23:00 | #
Oui j utilise toujours le numero de la touche (vieu réflexe du basic)
Pour les déplacements de j2 , je L avait pas encore fait quand j ai posté mon premier commentaire et j avait fait un bête copie colle de ceux de j1
Pour les problème du plateau, merci
Citer : Posté le 19/02/2014 23:05 | #
Il faut connaîre les codes des touches
En gros:
UP: 30018
LE: 30020
RI: 30021
DO: 30023
EXE: 30004
EXIT: 30002
Je te passe le reste, pas très intéressant de toute manière
Par souci de lisibilité du programme, c'est déconseillé, mais après tout c'est ton problème
Citer : Posté le 20/02/2014 06:14 | #
C'est pas faux...
Mais explique-moi quelle lisibilité apporte SaveDisp(SAVEDISP_PAGE1) par rapport à SaveDisp(1)
Et puis, le premier programme que j'ai fait (n'ayant pas consulté la doc) était le fameux "GetKey", sauf que la variable d'arrivée ne contient pas "KEY_CTRL_EXE"
Citer : Posté le 20/02/2014 08:42 | #
Ouais defois je recopie betement la doc de louloux
Pour certaines de tes interrogations, la fonction jeu fini et le bug venait bien du tableau trop petit
int w=0, collision=0;
Bdisp_AllClr_DDVRAM();
locate(8,1);
Print("Tron");
Bdisp_DrawLineVRAM(1,8,127,8);
initialisation_plateau();
lectureReglage();
acc_y_J1 = acc_y_J2 = 0;
acc_x_J1 = -1;
acc_x_J2 = 1;
x_J1 = 126;
x_J2 = 2;
y_J1 = y_J2 = 34;
Bdisp_PutDisp_DD();
SaveDisp(SAVEDISP_PAGE1);
Tmenu=0;
do{
Bdisp_AllClr_DDVRAM();
RestoreDisp(SAVEDISP_PAGE1);
affichage_grille();
Bdisp_SetPoint_VRAM(x_J1,y_J1,1);
Bdisp_SetPoint_VRAM(x_J2,y_J2,1);
Bdisp_PutDisp_DD();
plateau[x_J1][y_J1-9]=1;
plateau[x_J2][y_J2-9]=1;
x_J1 += acc_x_J1;
x_J2 += acc_x_J2;
y_J1 += acc_y_J1;
y_J2 += acc_y_J2;
/*
// Aide affichage code touche
sprintf(affichage,"%d",key);
PrintXY(1,1,affichage,0);
GetKey(&key);
*/
// Deplacements J1
if(IsKeyDown(30018) && y_J1>8 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=-1;
if(IsKeyDown(30023) && y_J1<63 && acc_x_J1!=0) acc_x_J1=0, acc_y_J1=1;
if(IsKeyDown(30020) && x_J1>0 && acc_y_J1!=0) acc_x_J1=-1, acc_y_J1=0;
if(IsKeyDown(30021) && x_J1<127 && acc_y_J1!=0) acc_x_J1=1, acc_y_J1=0;
// Mise en pause
if(IsKeyDown(30002)) pause();
// Deplacements J2
if(nbrJoueur==2){
if(IsKeyDown(30008) && y_J2>8 && acc_x_J2!=0) acc_x_J2=0, acc_y_J2=-1;
if(IsKeyDown(30007) && y_J2<63 && acc_x_J2!=0) acc_x_J2=0, acc_y_J2=1;
if(IsKeyDown(30006) && x_J2>0 && acc_y_J2!=0) acc_x_J2=-1, acc_y_J2=0;
if(IsKeyDown(139) && x_J2<127 && acc_y_J2!=0) acc_x_J2=1, acc_y_J2=0;
}
// Sinon Ordi
else{
// Ordi niveau 1
if(niveauOrdi==1){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==127)){
if(acc_y_J2==0) acc_x_J2=0, acc_y_J2=1;
else acc_y_J2=0, acc_x_J2=1;
}
}
// Ordi niveau 2
if(niveauOrdi==2){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==126)){
w=0;
if(acc_y_J2==0){
if(plateau[x_J2][y_J2-8]==1 || y_J2==9) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
w=1;
}
if(acc_x_J2==0 && w==0){
if(plateau[x_J2-1][y_J2]==1 || x_J2==1) acc_x_J2=1, acc_y_J2=0;
else acc_x_J2=-1, acc_y_J2=0;
}
}
}
// Ordi niveau 3 !!!!!!!!!!!! A FAIRE !!!!!!!!!!!!
if(niveauOrdi==3){
if(plateau[x_J2+acc_x_J2][y_J2+acc_y_J2-9]==1 || acc_y_J2!=0 && (y_J2==9 || y_J2==63) || acc_x_J2!=0 && (x_J2==1 || x_J2==127)){
if(acc_y_J2==0){
if(plateau[x_J2][y_J2-8]==1) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
}
else{
if(plateau[x_J2-1][y_J2]==1) acc_x_J2=0, acc_y_J2=1;
else acc_x_J2=0, acc_y_J2=-1;
}
}
}
}
// Test de collision
if(plateau[x_J1][y_J1-9]==1) collision=1;
if(plateau[x_J2][y_J2-9]==1) collision=2;
Sleep(10*(10-vitesse));
}while(collision==0 && Tmenu==0 && y_J1>=9 && y_J2>=9 && y_J1<64 && y_J2<64 && x_J1>=1 && x_J2>=1 && x_J1<128 && x_J2<128);
if(collision==0){
if(y_J1<9 || y_J1>=64 || x_J1<1 || x_J1>=128) collision=1;
else collision=2;
}
ML_rectangle(20, 25, 110, 40,1,1,0);
w=0;
if(collision==1 && w==0) collision=2, w=1;
if(collision==2 && w==0) collision=1, w=1;
sprintf(affichage,"Joueur %d gagne",collision);
PrintXY(23,30,affichage,0);
do{
GetKey(&key);
}while(key!=30004);
}
Citer : Posté le 20/02/2014 16:54 | #
C'est pas faux...
Mais explique-moi quelle lisibilité apporte SaveDisp(SAVEDISP_PAGE1) par rapport à SaveDisp(1)
En l’occurrence je disais que EXIT est plus parlant que 30002, et que personne n'ose me contredire !
Ouais defois je recopie betement la doc de louloux
Pourquoi bêtement ? En théorie ma doc n'est qu'une traduction agrémentée de celle de Casio, c'est pas ma faute si leurs fonctions sont toutes pourries...
Citer : Posté le 20/02/2014 17:18 | #
Il est vrai que "KEY_CTRL_EXIT" est plus parlant que "30002", et je ne te condredirai pas
Mais ça reste plus long à taper
Et puis, les programmes sont avant tout faits pour être exécutés. Et comme #define ne ralentit pas l'exécution...
@TheProg:
Citer : Posté le 20/02/2014 19:35 | #
Mais ça reste plus long à taper
Un bon éditeur de texte te propose automatiquement le nom des variables déjà utilisées, tu gagne beaucoup de temps avec une telle fonction
Citer : Posté le 21/02/2014 05:42 | #
Eh oh, doucement
Je te parle du SDK là