Forums Casio - Actualités

Index du Forum > Actualités > La revue des projets - 124
Lephenixnoir
En ligne
Administrateur
Points: 12532
Défis: 136
Message
Posté le 30/09/2018 15:53

La revue des projets - 124 :

Bonsoir à vous, cher visiteur. Cette semaine se tient la 124ème édition de la désormais célèbre Revue des Projets. Alors c'est parti !

Notre premier sujet ce soir est le moteur de calcul formel de Bernard Parisse, KhiCAS. Depuis qu'il a été porté sur la Graph 90, cet add-in lui confère des capacités mathématiques dignes de calculatrices haut de gamme !


KhiCAS fonctionne avec son propre langage de programmation, qui est très proche du Python : il ajoute donc le Python en plus du calcul formel sur votre calculatrice ! Et il le faut mieux que Casio, en supportant de nombreux modules de dessin et calcul scientifique, alors que l'application officielle ne propose que math et random.

Un tel outil peut paraître difficile à aborder, mais les efforts de Bernard Parisse en font un outil progressivement plus adapté à l'algorithmique Python et le dessin, avec notamment :

* Des fonctions de dessin en tortue
* Du dessin au pixel où à la ligne, comme en Basic
* Des tracés de courbes ou de graphes

De très beaux résultats qui n'attendent plus que votre attention. Allez y jeter un oeil sur le topic dédié !

-

Le tour suivant est à Masséna, qui n'a pas de très bonnes nouvelles à nous raconter.

Masséna a écrit :
Où il est démontré qu'une équipe éducative peut détruire vos projets.
Enfant, prend garde !


Jeudi. Très belle journée, ensoleillée (ce qui est le bienvenue en ces retombées de température). Mais bon j'arrête de parler de la météo.

Deux heures pour manger. Chouette, je vais pouvoir passer 1h30 sur Evocalc !
Après avoir pris mon [ironie] délicieux festin au self [/ironie], je m'assois sur un banc et sortis ma Graph 35+.
Laissez-moi vous conter ça en poésie désolé d'avance...

Notez que ça fait longtemps que je publie pas dans la RdP, mais j'étais à l'aboutissement de la partie textuelle !

Ayant sorti sa calculatrice
Survint un pion
Il vit en moi le Vice
Qu'est le non-respect de la règlementation.

- Bonjour, me dit-il
- Bonjour, lui répondis-je
- Donne moi ta calculatrice, demanda-t-il d'un air subtil
J'obéis, soumission oblige

Mais avec l'ordre on ne badine
Il descendit mon menu
Il vit donc tous mes add-ins
Je su donc que j'étais foutu

Par sa grâce il me laissa une chance
Il me demanda de tout reset
Je le fis, quoi que je pense
C'est... Vraiment... Bête

Voyant un espoir je sauva mon projet
En le mettant dans la mémoire secondaire
La situation devenait précaire
Je supprima tous les autres jouets

Mais la calto peut êtres cocu
Car ma mémoire
Fut corrompue !

En gros, comme je fais jamais de sauvegardes et bosse pas sur BIDE, je suis comme qui dirait "dans la merde".

Je ne sais pas pourquoi mes programmes se sont corrompus dans la mémoire secondaire, en tout cas c'est bien chiant. Rip mes pictures et mon gm1.

Cela dit, je devrait peut être en tirer deux choses :
- Maintenant je me lance dans la programmation in-computo
- Je vais pouvoir m'impliquer pleinement dans le triconcours !

De même, le projet n'est pas mort. Il me reste encore mon scénario couché sur papier et deux trois images publiées sur imgur. Peut être même que le dieu de la programmation sera clément et que j'aurais pensé à faire une sauvegarde !

Conclusion : Les add-ins, c'est trop voyant. Et ça cause des problèmes.

Pas très motivant, ce genre de problèmes ! Si vous n'avez pas encore fait de sauvegarde sur mémoire seconde ou sur ordinateur de votre projet, hâtez-vous, ça ne pourra que vous aider !

-

Notre dernier intervenant est Yatis, aux nouvelles de son portage de Warning Forever, un shooter constitué uniquement de boss. En remaniant le concept pour modéliser un boss unique qui s'adapte de combat en combat, il nous a déjà montré des graphismes pétés dans les précédentes RdP.


Yatis a écrit :
Des petites nouvelles de Warning Forever

Le projet a totalement migré sous Linux et ça m'a permis de revoir certaines choses du code notamment les fonctions de rotation de bmp. Pour information j'utilise la fonction ML_bmp_rotate() de Ninestars que j'ai entièrement refait d'ailleurs voila le code pour les curieux:

void ML_bmp_rota(const unsigned char *bmp, int x, int y, int width, int height, int angle)
{
    char i;
    char j;
    char nb_width;
    int ox;
    int oy;
    int dx;
    int dy;
    int xr;
    int yr;
    int sinus;
    int cosinus;

    if (bmp)
    {
        i = -1;
        ox = x + (width >> 1);
        oy = y + (height >> 1);
        nb_width = width + 7 >> 3;
        cosinus = cos_table[angle];
        sinus = cos_table[modulo_360(angle + 90)];
        while (++i < width)
        {
            j = -1;
            dx = x + i - ox;
            while (++j < height)
            {
                if (bmp[(i >> 3) + nb_width * j] & 0x80 >> (i & 7))
                {
                    dy = y + j - oy;
                    xr = ox + (dx * cosinus - dy * sinus + 8191 >> 14);
                    yr = oy + (dx * sinus + dy * cosinus + 8191 >> 14);
                    if (!(yr & 0xffffffc0 || xr & 0xffffff80))
                    vram[(yr << 4) + (xr >> 3)] |= 128 >> (xr & 7);
                }
            }
        }
    }
}


J'ai essayé d'ajouter 8191 (a la fonction de trigo) ce qui correspond à la valeur 0.5 ça me permet de dire, par exemple, "si à position du pixel est égal à 3,9 alors tu le mets à la position 4,4". ça règle toujours pas le problème des "trous" mais l'image est carrément moins déformé.

De plus j'applique la fonction de trigo (qui est très lourde) uniquement au pixel "allumé" de l'image. J'ai donc gagné en fps mais je tombe toujours vers 54 fps quand le boss devient "gros".

Je suis donc en train de me débarrasser de setFPS() au profit des Timers car je la soupçonne de réduire complètement mes fps (sans setFPS() je suis vers ~100fps et avec ~52fps). Pour l'instant j'utilise SetTimer() et KillTimer() ce qui devrait changer à l'avenir par mes propres fonctions de timer (parce que j'aime bien comprendre comment une fonction....fonctionne et ça va me permettre de comprendre l'INTC et les interruptions).

Sinon j'ai réglé tous les problèmes de "norme" (j'en avais beaucoup) maintenant le code est "lisible" et disponible sur un repos

Voilà "c'est tout" ce que j'ai faits en 2 semaines (j'ai repris les cours j'ai donc carrément moins le temps )

Ça reste un joli travail ! Attention toutefois, tu ne peux pas remplacer les timers et le contrôleur d'interruptions n'importe comment, sinon tu vas tout casser !

Cette semaine, six programmes a été posté :
- LE Basket de Manolo
- KanColle AS Sim 1.1 d'Oradimi
- Stat Reglin, Evol, Étude lim et Domaine de Samourai37

Lire la dernière RDP : La revue des projets - 123
Soumettre un article à la RDP : Formulaire de soumission





Lephenixnoir
En ligne
Administrateur
Points: 12532
Défis: 136
Message
Citer : Posté le 30/09/2018 15:55 | #
Pour préciser ma remarque, Yatis : tu ne peux pas remplacer SetTimer() par une fonction du TMU à moins de réécrire tout le gestionnaire d'interruptions (gint) ou effectuer des gourouteries hasardeuses avec le système (auto-debugger de Kristaba). Franchement je te le conseille pas trop...
----------------------------------
Rise.
Dark storm
Hors ligne
Administrateur
Points: 10598
Défis: 174
Message
Citer : Posté le 30/09/2018 16:03 | #
Concernant le problème de Massena, c'est complètement abusif de la part du surveillant. Même en cas d'examen, tout ce qu'il a le droit de faire est de confisquer la calculatrice, et non effacer les données présentes dedans.
Je te conseille de signaler l'incident à la direction, qui pourra faire un rappel de la loi auprès des surveillants de l'établissement (et des profs par la même occasion).

Dans tous les cas faites des backups !

Sinon, hâte de voir ce que va donner le projet de Yatis
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Lightmare
Hors ligne
Membre de CreativeCalc
Points: 282
Défis: 0
Message
Citer : Posté le 30/09/2018 16:17 | #
@Massena : on est tous avec toi ! j'ai connu ca, et il ne faut pas rester passif ! Il n' a pas le droit de te priver d'un outil scolaire et encore moins en dehors des périodes d'examens ( et dans le pire des cas tu dis que tu sais pas reset )
----------------------------------
devenez secrétaire de Planète Casio ! urgent !
Shadow15510
Hors ligne
Rédacteur
Points: 1755
Défis: 15
Message
Citer : Posté le 30/09/2018 17:06 | #
@Massena : C'est honteux Je suis d'accord avec D-S : parles-en à la direction !
----------------------------------
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   70%
Massena
Hors ligne
Membre
Points: 294
Défis: 3
Message
Citer : Posté le 30/09/2018 18:26 | #
Merci de vos retour !
D'accord, je penserais à en parler à la direction.
de tout façon moi et lui on se voit pas en photo...

Mais je n'ai fait que supprimer tous mes add-ins, et c'est un bug de la calto ou une manip foireuse qui a supprimé mon prog.
Je sais pas quoi.

En tout cas, je retiendrais la leçon.
Et je vais en profiter pour refaire les graphismes en mieux
et je vais enfin pouvoir jouer à Aventura. Ouèèèè !

~~~

@Yatis : Fonce ! J'ai hâte de jouer à ton jeu
----------------------------------
La loi de Murphy a écrit :
La probabilité qu'un événement arrive est inversement proportionnelle à sa désirabilité.
Yatis
Hors ligne
Membre
Points: 305
Défis: 0
Message
Citer : Posté le 30/09/2018 18:32 | #
Bon...en utilisant la fonction SetTimer() je tombe sur des résultats très étranges, vraiment.
Déjà si je fais ça:

SetTimer(1, 1, &game_main);
while (exit > 0);
KillTimer(1);

Ou exit sert d'attente pour que la partie se finisse.
Eh bien, impossible de sortir de la boucle (alors qu' exit change bien) et je suis à 40 Fps.
Mais maintenant si je le modifie un peu:
SetTimer(1, 1, &game_main);
while (exit > 0)
{
    asm_clear_vram(vram);
    print_uint(exit, 0, 0, 0);
}
KillTimer(1);

Ici le code rajouté sert à rien car je n'affiche même pas la VRAM a l'écran.
Mais grace à ça, j'arrive à sortir de la boucle (exit est pris en compte) et je reste à 40 Fps.
Je sais pourquoi je suis aussi bas en Fps et pourquoi ça fait ça... >_<


Lephenixnoir a écrit :
Pour préciser ma remarque, Yatis : tu ne peux pas remplacer SetTimer() par une fonction du TMU à moins de réécrire tout le gestionnaire d'interruptions (gint) ou effectuer des gourouteries hasardeuses avec le système (auto-debugger de Kristaba). Franchement je te le conseille pas trop...

Bon, bah d'accord je ne mis frotterais pas Même si les interruptions m'intéressent de plus en plus....

Dark storm a écrit :

Sinon, hâte de voir ce que va donner le projet de Yatis

Moi aussi... x)
J'espère y arriver en tout cas
Lephenixnoir
En ligne
Administrateur
Points: 12532
Défis: 136
Message
Citer : Posté le 30/09/2018 18:36 | #
Euh, tu sais que le délai de SetTimer() il a une granularité de 25 ms mais il est quand même exprimé en ms ?
----------------------------------
Rise.
Yatis
Hors ligne
Membre
Points: 305
Défis: 0
Message
Citer : Posté le 30/09/2018 18:40 | #
Lephenixnoir a écrit :
Euh, tu sais que le délai de SetTimer() il a une granularité de 25 ms mais il est quand même exprimé en ms ?

Fxlib.h a écrit :

Une fonction pas si simple à utiliser mais TRES utile. Elle permet de lancer un timer qui appellera une fonction à intervalle régulier. En premier argument on passe l'ID du timer (de 1 à 5). En second argument le temps entre 2 répétitions (en millisecondes), et enfin la fonction à appeler. Attention, le passage de la fonction par pointeur s'effectue avec uniquement le nom de la fonction, sans parenthèses (un timer ne peut pas passer d'arguments).

Si la fonction réussit, elle retourne l'ID du timer (utilité ?). Sinon elle retourne une valeur négative correspondant à un code d'erreur. Un échec survient si un paramètre est mauvais ou si le timer est utilisé.
Lephenixnoir
En ligne
Administrateur
Points: 12532
Défis: 136
Message
Citer : Posté le 30/09/2018 18:46 | #
Donc si tu veux 40 FPS, tu veux 25 ms de délai, pas 1 ms de délai.
----------------------------------
Rise.
Yatis
Hors ligne
Membre
Points: 305
Défis: 0
Message
Citer : Posté le 30/09/2018 18:48 | #
Nan, j'aimerais avoir ~64fps mais la avec 1ms de delais je suis a 40fps
Critor
Hors ligne
Partenaire
Points: 866
Défis: 0
Message
Citer : Posté le 30/09/2018 18:48 | #
Je suis dans l'incapacité totale de comprendre l'histoire du pion.

A supposer qu'il ait assimilé la calculatrice à un smartphone, désormais interdit de façon générale dans l'enceinte des écoles et collèges cour de récréation incluse...
A supposer que ton lycée ait formulé une interdiction similaire au règlement intérieur... au mieux on te demandait de le ranger pour aller bosser ou pratiquer des jeux meilleurs pour la santé, ou au pire on te la confisquait.

Mais même aux examens on n'a pas le droit de fouiller les calculatrices ou d'en effacer le contenu. Alors là, sur un blanc dans la cour, tu parles...
Lephenixnoir
En ligne
Administrateur
Points: 12532
Défis: 136
Message
Citer : Posté le 30/09/2018 18:50 | #
Comme je l'ai dit, la granularité est de 25 ms. Le délai est soit 25 ms, soit 50 ms, il n'y a pas d'entre-deux.

Actuellement ton 1 est arrondi à 0 par SetTimer() (le multiple de 25 inférieur) et ça donne un TCOR pour le timer sous-jacent de 0 ; comme c'est pas raisonnable SetTimer() prend une valeur complètement arbitraire de 25 ms à la place, résultat ton callback tourne à 40 Hz.

Tu ne peux pas avoir 64 Hz, mais 40 suffisent largement sur la calculatrice.
----------------------------------
Rise.
Massena
Hors ligne
Membre
Points: 294
Défis: 3
Message
Citer : Posté le 30/09/2018 20:26 | #
J'me merde les exams je suis en troisième è_é
----------------------------------
La loi de Murphy a écrit :
La probabilité qu'un événement arrive est inversement proportionnelle à sa désirabilité.
Parisse
Hors ligne
Membre
Points: 54
Défis: 0
Message
Citer : Posté le 01/10/2018 09:06 | #
Quelques captures d'ecran de KhiCAS, plus à jour:
tableau de variations

graphe

shell de calcul

tortue logo

source correspondant

fractale de Mandelbrot

en cours d'execution:
Drak
Hors ligne
Rédacteur
Points: 1761
Défis: 38
Message
Citer : Posté le 01/10/2018 18:54 | #
Wow. Y'a du niveau !
----------------------------------
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !


Index du Forum > Actualités > La revue des projets - 124

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

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd