Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Problèmes SDK divers et variés
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Problèmes SDK divers et variés

Posté le 26/10/2013 11:00

Salut j'ai fait un petit programme mais je comprends pas pourquoi la fonction Print ne veut pas afficher la chaine que je lui demande ...

Le code
Cliquer pour enrouler
#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


la chaine ident fait 21 caracteres


Précédente 1, 2, 3, 4, 5 ··· 10 ··· 20, 21, 22, 23 Suivante
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 13/02/2014 21:00 | #


non, je met ma police perso, et donc je peux la choisir
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

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
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

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.
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
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

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
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 !
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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é

Le code
Cliquer pour enrouler
#include "fxlib.h"
#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
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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à...
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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:
char plateau[127][54];

Et dans la fonction affichage_grille():
for(b=0;b<55;b++)

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:
plateau[x_J1][y_J1-9]=1;
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:
// 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;
}

ce sont les coordonnées du J1 qui sont utilisées pour les déplacements du J2 ?
Tenmatx Hors ligne Membre Points: 996 Défis: 2 Message

Citer : Posté le 19/02/2014 22:11 | #


Que signifie IsKeyDown(30018) 0_0.
Moi j'utilise IsKeyDown(KEY_CTRL_nom de la touche).
Mes programmes de maths
Mes programmes de maths

Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Mes meilleurs jeux
Mes meilleurs jeux

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...)
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 19/02/2014 23:05 | #


Lephenixnoir a écrit :
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
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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"
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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
jeu()
fermer
void jeu(){
    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);
}

Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 20/02/2014 16:54 | #


Lephenixnoir a écrit :
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 !

Theprog a écrit :
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...
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

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:
Dark storm En ligne Labélisateur Points: 11549 Défis: 176 Message

Citer : Posté le 20/02/2014 19:35 | #


Lephenixnoir a écrit :
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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 21329 Défis: 149 Message

Citer : Posté le 21/02/2014 05:42 | #


Eh oh, doucement
Je te parle du SDK là
Précédente 1, 2, 3, 4, 5 ··· 10 ··· 20, 21, 22, 23 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 41 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd