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.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graph 35+USB/75(+E)/85/95 SD >> Add-ins >> Slide
Slide
Version : 1.0 Taille : 60224 octets Ajouté le : 2017-03-26 11:35 Modifié le : 2017-03-26 11:37
Auteur et posteur :
YatisEn ligneMembrePoints: 581 Défis: 0 Message
Planète Casio - Add-in Casio - Slide - yatis - Calculatrices
Nombre de visites sur cette page : 6177
Score au progrank : 49
Note actuelle : 8.75/10 noté 2 fois
Vous devez être connecté(e) pour noter (inscription).
881 téléchargements | Voir les Tests (2)


A cause du changement de processeur des nouvelles Graph 35+ USB, 75 et 95 SD, de nombreux addins sont incompatibles avec ces calculatrices.
Rendre un addin compatible - Plus d'informations sur ce problème - Liste des addins compatibles

Description :

Cette add-in est l\'adaptation du jeu slider, il reprend la plupart des niveaux (il y en a 160) ainsi que 4 « mode » de jeu :
-play (commence du niveaux 1 jusqu\'aux dernier niveaux) (stable)
-levels (menu des niveaux) (stable)
-timed (le joueur doit refaire tout les niveaux dans le désordre avec 2 minute comme temps de départ. (les 80 premier niveaux jouer font gagner 10 secondes, les 70 niveau d\'après 5secondes, puis les dernier niveaux font gagner des dlc de call of duty)) (~stable)
-infinite (génère une map au piff) (bug++)

commande :
-flèche pour bouger
-[F6] : restart
-[EXIT] : pause (+[F6] retour menu base)
-[F5] : recréer un map au piff
-[SHIFT] ou [EXE] : entrée


a venir : une maj pour fix le mode infinite + le mode timed sera refait car jugé trop chiant


Note sur 10 Commentaire Date de notation
9Voir le testLe 04.03.2021 à 09:28
8.5Voir le testLe 04.03.2021 à 20:45

Commentaires :

Pages: 1, 2 | Suivante

-florian66-Hors ligneAncien rédacteurPoints: 2384 Défis: 20 Message
Posté le 26-03-2017 à 12:40 | #
Bonjour, bienvenue dans la communauté des programmeurs en C !

J'ai testé ton jeu et je l'ai trouvé bien fait !

Cependant,en ayant regardé la taille de l'addin (60ko), nous nous sommes dit (Lephenixnoir et moi) que l'on devrait regarder un peu le code et donc on s'est penché sur ton stockage des niveaux !

Ce que je vais te proposer comme optimisation te permettra de stocker chaque niveau sur *hum* 19 octets maximum et donc tes 160 niveaux sur 3040 octets ! Ce qui est ridicule !

Notons que tes niveaux sont codés en [i]unsigned char[/i] ce qui fait que chaque nombre que tu stockes prend chacun 1 octet. Donc chaque niveau fait donc 1*18*10 + 1 (nombre max de coups) => 181 octets !

Si on enlève les bordures extérieures (qui sont toujours à 1), on se retrouve maintenant à stoker chaque niveau sur 16*8 octets (128 octets).

Notre méthode d'optimisation serait de stocker chaque "1" ou "0" sur chaque bit d'un nombre (et pas 1 octet avant).
Si chaque ligne est codée sur 2 octets ([i]unsigned short[/i]) * 8 lignes, on arrive donc à 16 octets pour le dessin du niveau. (1 octet = 8 bits)

L'autre problème est de stocker aussi le nombre de coups maximum ainsi que l'emplacement de départ (bloc n°9) et d'arrivée (bloc n°8) du bloc noir.
On va donc stocker les coordonnées (x,y) du bloc de départ dans 1 seul octet (avec x qui prend 4 bits et y, les 4 autres bits) et le nombre de coup maximum dans un octet entier.
On arrive donc à stocker le départ et l'arrivée dans 2 octets + 1 octet (pour le nombre maximum de coups) => 3 octets.

Récapitulons : on a donc les 16 octets du niveau + 3 octets pour le reste => 19 octets

Avec cette méthode, on peut donc écrire :
    static const unsigned char map1[]={
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1,
        1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    1}; // ton niveau

Si on optimise :
0000000000000000 => 0 // 1ere ligne de ton niveau
0000000000000000 => 0 // 2eme ligne de ton niveau
1000000000000000 => 32768 // 3eme ligne de ton niveau
0000000000000000 => 0
etc ...;

Pour les coordonées : le départ (bloc n°9) (on part sur un repère orthonomé)
x => 0000 et y => 0100
Donc un octet : 00000100

Idem pour l'arrivée
Et on stocke le nombre de coup dans un `unsigned char`


Pour éditer ou récupérer chaque valeur, les opérateurs bitwise du C te seront d'une grande aide !

En espérant que tu en tiennes compte. Je te souhaite beaucoup de courage pour la suite !

Si tu as des questions, n'hésite pas à la poser !
YatisEn ligneMembrePoints: 581 Défis: 0 Message
Posté le 29-03-2017 à 17:49 | #
Merci beaucoup pour tes conseils, je vais essayer d'optimiser tout ça
-florian66-Hors ligneAncien rédacteurPoints: 2384 Défis: 20 Message
Posté le 04-04-2017 à 08:12 | #
Ah oui, auusi j'ai vu qu'il y avait beaucoup de IsKeyDown(), je pense que tu peux les remplacer par des GetKey(&key); en modifiant ton moteur de jeu de cette façon (GetKey est une fonction bloquante)

calcul des collisions ainsi que de la position
GetKey(&key); //on récupère la touche pressé
switch(key)
    {
    case KEY_CONTROL_UP : ... // on exécuté une action
                         break;
    case KEY...
                         break;
    }


On fait le tout dans une boucle
PierrickHors ligneMembrePoints: 195 Défis: 0 Message
Posté le 17-06-2017 à 12:32 | #
C'est quoi le mot Getkey
Je le vois partout dans le forum sans comprendre .
Ne0tuxHors ligneMembre d'honneurPoints: 3525 Défis: 265 Message
Posté le 17-06-2017 à 12:41 | #
Salut Pierrick !

Tu trouveras une explication complète de cette fonction sur cette page dédiée : http://www.planet-casio.com/Fr/reference_basic_casio/commande_basic.php?fonc=20

Tu pourras ensuite examiner une mise en pratique directe sur cette page : http://www.planet-casio.com/Fr/programmation/morpion.php

N'hésite pas à en faire usage dans tes futures créations, que l'on a hâte de voir !
PierrickHors ligneMembrePoints: 195 Défis: 0 Message
Posté le 17-06-2017 à 15:15 | #
Ok en fait je connaissais déjà sans le savoir .
Merci quand même .
ArtixHors ligneMembrePoints: 23 Défis: 0 Message
Posté le 02-04-2019 à 12:43 | #
Salut !

J'ai fini l'entiereté du jeu et j'ai remarqué 2 niveaux impossible et 1 niveau possible avec moins de mouvements que ce qui est demandé:

le niveau 30 est possible en 5 mouvements au lieu de 8
les niveaux 137 et 153 sonts impossible il faudrait pour chacun déplacer un cube qui est mal placé

Voila
YatisEn ligneMembrePoints: 581 Défis: 0 Message
Posté le 02-04-2019 à 14:10 | #
Salut @Artix
Je ne savais pas que ce jeu était encore joué
Merci de m'avoir fait part de ces problèmes je les corrigerai quand je trouverai un peu de temps (pour l'instant ça risque d'être compliqué).
En tout cas merci encore
LepianoteurHors ligneMembrePoints: 217 Défis: 0 Message
Posté le 02-04-2019 à 15:02 | #
@Yatis moi j'y joue souvent en cours, et quelque personne de ma classe aussi, ton jeu est encore jouer
ArtixHors ligneMembrePoints: 23 Défis: 0 Message
Posté le 03-04-2019 à 13:29 | #
@Yatis si et on est pas mal aussi dans ma classe à y joué,
un mode edition serait génial si tu as le temps et l'envie de continuer ton programme

Pages: 1, 2 | Suivante

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 110 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