Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » LINK! (jeu multijoueur)
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

LINK! (jeu multijoueur)

Posté le 28/10/2020 14:56

bonjour aujourd’hui je présente mon projet,
LINK ! est une sorte de party-game ou l'on peux jouer en solo ou a deux avec le câble 3 broche

grace a gint le jeu sera compatible sur la plupart des calculatrices (enfin j'espère )

liste des jeux:
search (annulé)
dans ce jeu, il faudra chercher un objet précis dans un lieux étrange
c'est comme among-us mais au lieux de tuer et survivre, il faudra trouver un objet

press
dans ce jeu vous vous trouverez sur une ligne et il faudra
presser la touche affiché a l’écran comme OPTN ou 6 ou DEL etc...
pour chaque touche pressé vous avancerez de quelques pixels,
le premier que arrive a la bordure droite de l’écran gagnera
morpion
rien de plus basic qu'un morpion

roket
dans ce jeu vous serez dans un tableau fixe avec un lance-roquettes vous vous déplacerez dans 4 sens
mais vous pourriez tirer que a droite ou a gauche le premier coup sera fatal

IMAGES:








VERSIONS:
version test 1
version test 1

https://www.planet-casio.com/Fr/programmes/programme4114-1-link-version-test-1-pedrobzh-jeux-add-ins.html
compatible toute graph monochrome sh4 (graph 35+E II inclus)
après 2 semaine la première version est disponible,
elle contient:
-les déplacements du futur jeu roket
-un debug mode
-des animations
-des mouvements fluides

bon test



Fichier joint


1, 2, 3 Suivante
Filoji Hors ligne Maître du Puzzle Points: 348 Défis: 16 Message

Citer : Posté le 28/10/2020 15:36 | #


Toute cette pub me donne envie d'y jouer !
Bonne chance pour le développement !
Gloire au Flying Spaghetti Monster !!!
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 28/10/2020 15:52 | #


merci ^^, je me suis lancé a la calculatrice il y a une semaine

mais j'ai déjà codé!

j'ai un jeu fais avec SDL2 en c++ ou c'étais un minecraft (ou minetest ) vu du dessus
on pouvait poser et retirer des blocs et pour stoker la map il y avais une base de donnés SQLite3
j'ai commencé a le refaire mais en ligne avec flask (j'adore flask, j'ai codé mon blog avec (c'est relou quand on dois gérer les les topics) )
mais j'avais la flemme et j'avais commencé mon jeu sur roblox studio ( 120R$ de gainé )
pensés suicidaires
   90%
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 28/10/2020 18:12 | #


C'est vrai que ça a vraiment l'air pas mal.
Mais pour le Morpion, il semblerait que tu te soit fait doubler
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 28/10/2020 18:22 | #


je sais , je veux te copier , ton add-in marche pas sur graph35+E II
pensés suicidaires
   90%
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 28/10/2020 18:29 | #


Ah !
C'est possible qu'il ne soit pas fonctionnel dessus, en effet.
Tu es sûr qu'avec gint il va marcher ?
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 28/10/2020 18:38 | #


oui c'est possible (enfin j'espère avec gint )
sinon il y a ta librairie qui est dans ton morpion
pensés suicidaires
   90%
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 28/10/2020 18:39 | #


Pedrobzh a écrit :
sinon il y a ta librairie qui est dans ton morpion

?
Je ne comprends pas ...
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 28/10/2020 19:37 | #


Est ce que tu prévois une version g90 ?
Si oui , pourras t on brancher une calto monocrome avec une g90?
Globalement, coder. Mal, mais coder.
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 29/10/2020 08:01 | #


OOF , je vais voir mais ma priorité c'est le monochrome!
pensés suicidaires
   90%
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 29/10/2020 09:21 | #


Oui t'inquiète pas
Globalement, coder. Mal, mais coder.
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 29/10/2020 14:13 | #


mais en effet, si les 2 versions ont le même type/protocole de communication,
ça risque de marcher , sans que j'ai a faire quelque chose

Ajouté le 30/10/2020 à 13:24 :
le jeu avance, je fais le système des animations mais étrangement il affiche plus le joueur,
je redémarre le jeu et j'ai

TAGET=4F22E90F
PC=8008E566

ça signifie quoi?
pensés suicidaires
   90%
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 30/10/2020 13:26 | #


https://www.planet-casio.com/Fr/forums/topic16528-1-comment-dechiffer-un-system-error.html
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 30/10/2020 13:37 | #


cela explique pas grand chose

Ajouté le 30/10/2020 à 13:42 :
après quelques petits changements le joueur s'affiche, mais pas a la position 0,0, étrange ,
et surtout il est figé.
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/timer.h>
#include <gint/clock.h>
extern bopti_image_t img_player;

typedef struct{
    int frame_1;
    int frame_2;
    int frame_3;
    int frame_4;
    int frame_5;

} Animation;

typedef struct{

    /* Position in map */
    int x, y;
    /* Direction currently facing */
    int dir;// 0: left, 1: right
    //int animdata[10][5][2];
    Animation anim_walk_left;
    Animation anim_walk_right;
    /* Animation and frame */

    Animation anim_playing;
    int twait;
    int frame;
    int anim;
    int status; //1: normal, 2: roket, 3: code manipulation
} Player;

int Animation_get_data(Animation ani,int frame){
    switch(frame){
        case 0: return ani.frame_1; break;
        case 1: return ani.frame_2; break;
        case 2: return ani.frame_3; break;
        case 3: return ani.frame_4; break;
        case 4: return ani.frame_5; break;
    }
    return 0;
}

Player Player_init(Player plr){
    plr.anim_walk_right.frame_1 = 0;//  = {0,1,2,3,4};
    plr.anim_walk_right.frame_2 = 1;
    plr.anim_walk_right.frame_3 = 2;
    plr.anim_walk_right.frame_4 = 3;
    plr.anim_walk_right.frame_5 = 4;
    //plr.anim_walk_left.  //= {5,6,7,8,9};
    plr.anim_playing = plr.anim_walk_right;
    plr.status = 1;
    plr.dir = 1;
    return plr;
}
Player Player_check_anim(Player plr){
    if(plr.status==1){
        if(plr.dir==0){plr.anim_playing = plr.anim_walk_left;}
        if(plr.dir==1){plr.anim_playing = plr.anim_walk_right;}
    }
    if(plr.twait == 15){
        plr.twait = 0;
        plr.frame = plr.frame + 1;
        if(plr.frame > 4){
            plr.frame = 0;
        }
    }
    plr.twait = plr.twait + 1;
    plr.anim = Animation_get_data(plr.anim_playing,plr.frame);
    return plr;
}

void Player_print(Player plr){
    dsubimage(plr.x, plr.y,&img_player,0,plr.anim*12,11, 11, DIMAGE_NONE);
}
//int opt = GETKEY_DEFAULT & GETKEY_REP_ARROWS;


int select = 1;

int main(void){
    extern bopti_image_t img_logo;
    extern bopti_image_t img_button;
    int playing = 1;
    int key = 0;
    Player player;
    player = Player_init(player);
    int opt = GETKEY_DEFAULT & ~GETKEY_REP_ARROWS & GETKEY_MENU;


    while(playing==1){
        while(key != KEY_SHIFT){
            dclear(C_WHITE);
            dimage(25, 3, &img_logo);
            //dsubimage(40, 40,&img_player,0* 11, 0, 11, 11, DIMAGE_NONE);

            if(select==1){dsubimage(35, 33,&img_button,0, 10, 42, 10, DIMAGE_NONE);}
            else{dsubimage(35, 33,&img_button,0, 0, 42, 10, DIMAGE_NONE);}

            if(select==2){dsubimage(35, 45,&img_button,0, 30, 42, 10, DIMAGE_NONE);}
            else{dsubimage(35, 45,&img_button,0, 20, 42, 10, DIMAGE_NONE);}
            dupdate();
            key = getkey_opt(opt, NULL).key;
            if(key == KEY_UP){select=1;}
            if(key == KEY_DOWN){select=2;}

        }
        while(1==1){
            dclear(C_WHITE);
            player = Player_check_anim(player);
            Player_print(player);
            dupdate();
            key = getkey_opt(opt, NULL).key;
        }
    }
    return 1;
}

pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 30/10/2020 13:45 | #


Pedrobzh a écrit :
cela explique pas grand chose

Mais si tu veux comprendre on sera ravis de répondre à tes questions plus en détail.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 30/10/2020 14:46 | #


ça parle se seriral write mais pas de mon problème ca me dis pas grand chose sur le déchiffrement des sys error
pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 30/10/2020 14:52 | #


Bon l'information est un peu cachée. PC c'est l'endroit du code où l'erreur s'est produite. Ici c'est dans la ROM donc c'est une fonction de l'OS que ton add-in a appelé. La ligne au-dessus de TARGET contient le message à proprement parler (que tu n'as pas copié). Dans le cas où l'erreur s'est produite lors d'un accès à la mémoire, TARGET indique quelle adresse mémoire a posé problème. La valeur de TARGET que tu as ici est pétée, ça ne représente aucune mémoire valide.

Donc malheureusement tout ça ne te dit pas grand-chose. Construire un exemple minimal t'en dira toujours plus...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 30/10/2020 15:23 | #


oui j'ai compris, mais comment savoir qu’es-qu’il y a a cette mémoire?
pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 30/10/2020 15:28 | #


Tu peux désassembler l'OS, mais ensuite il faudrait déterminer un graphe d'appels, bref c'est la merde.

Et cet exemple minimal ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 30/10/2020 15:34 | #


:/ j'y arrive pas, il y a plen de trucks qui marche pas dans mon programme, il y a trop de possibilités,
je vais bientôt changer la structure

mais j'ai une question, on peux programmer avec gint en c++? plus précisément avec la norme c++ 11

si oui comment, il y a une option pour le fxsdk?

Ajouté le 30/10/2020 à 16:23 :
après test le c++ fais des erreurs de compilation
ierre@pc-deb-799:~/opt/sh-elf-2.32-9.2.0/link$ fxsdk build-fx

:: Making into build-fx

sh-elf-g++ -c src/main.c -o build-fx/src/main.c.o -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields -Wall -Wextra -Wno-missing-field-initializers -Os -D FX9860G -m3 -I include -MMD -MT build-fx/src/main.c.o -MF build-fx/src/main.c.d -MP
sh-elf-g++ -o build-fx/link.elf build-fx/src/main.c.o build-fx/assets/img/button.png.o build-fx/assets/img/logo.png.o build-fx/assets/img/player.png.o -mb -ffreestanding -nostdlib -fstrict-volatile-bitfields -Wall -Wextra -Wno-missing-field-initializers -Os -D FX9860G -m3 -I include  -T fx9860g.ld -lgint-fx  -lgint-fx -lgcc -Wl,-Map=build-fx/map
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: build-fx/src/main.c.o: in function `Player_print(Player)':
main.c:(.text+0x150): undefined reference to `dsubimage(int, int, bopti_image_t const*, int, int, int, int, int)'
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: build-fx/src/main.c.o: in function `_main':
main.c:(.text.startup+0x164): undefined reference to `dclear(color_t)'
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: main.c:(.text.startup+0x16c): undefined reference to `dimage(int, int, bopti_image_t const*)'
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: main.c:(.text.startup+0x174): undefined reference to `dsubimage(int, int, bopti_image_t const*, int, int, int, int, int)'
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: main.c:(.text.startup+0x17c): undefined reference to `dupdate()'
/home/pierre/opt/sh-elf-2.32-9.2.0/lib/gcc/sh3eb-elf/9.2.0/../../../../sh3eb-elf/bin/ld: main.c:(.text.startup+0x180): undefined reference to `getkey_opt(int, int volatile*)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:102 : link.g1a] Erreur 1

pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 30/10/2020 16:27 | #


Ah c'est un problème de name mangling. Les en-têtes de gint ne sont pas gardés avec le extern "C", mais tu peux t'en sortir sans trop de difficultés.

extern "C" {
#include <gint/keyboard.h>
#include <gint/display.h>
}

Tu peux trouver facilement des infos sur ce problème avec les termes que je t'ai donnés.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
1, 2, 3 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 99 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