π
<-

[Projet]LifeGame

Assembleur, Axe, C/C++, ICE...

[Projet]LifeGame

Message non lude Ti64CLi++ » 19 Mai 2016, 12:56

Bonjour,
Ayant vu la lenteur du jeu de la vie en Basic de Clément.7, j'ai voulu développé le mien, mais en un langage nettement plus rapide : le C.
Seulement, il ne fait pas du tout ce que je voudrais qu'il fasse.
Voilà mon code:

le main.c
Code: Tout sélectionner
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <tice.h>
#include <math.h>

#include "keys.h"
#include "gc.h"

#include <lib/ce/graphc.h>
#include <lib/ce/fileioc.h>
#include <lib/ce/keypadc.h>

uint16_t globalColor;

void wait(uint16_t t)
{
    for (int i = 0 ; i < t ; i++)
        boot_WaitShort();
}

void main(void)
{
    int lifetab[100][100];
    int x_cur = 320/2-50, y_cur = 240/2-50;
    gc_InitGraph();
    gc_FillScrn(0x0F);
    gc_SetTextColor(255);
    gc_SetColorIndex(255);
    gc_NoClipRectangle(320/2-50,240/2-50,100,100);
    while(!isKeyPressed(KEY_2ND))
    {
        globalColor = 0;
        gc_drawPixel(x_cur,y_cur);
        if (isKeyPressed(KEY_ALPHA))    lifetab[x_cur - (320 / 2 - 50)][y_cur - (240 / 2 - 50)] = 1;
        if (isKeyPressed(KEY_LEFT) && x_cur > 320 / 2 - 50)
        {
            if (!lifetab[x_cur - (320 / 2 - 50)][y_cur - (240 / 2 - 50)])
            {
                globalColor = 255;
                gc_drawPixel(x_cur, y_cur);
            }
            x_cur--;
        }
        if (isKeyPressed(KEY_RIGHT) && x_cur < 320 / 2 + 50)
        {
            if (!lifetab[x_cur - (320 / 2 - 50)][y_cur - (240 / 2 - 50)])
            {
                globalColor = 255;
                gc_drawPixel(x_cur, y_cur);
            }
            x_cur++;
        }
        if (isKeyPressed(KEY_UP) && y_cur > 240 / 2 - 50)
        {
            if (!lifetab[x_cur - (320 / 2 - 50)][y_cur - (240 / 2 - 50)])
            {
                globalColor = 255;
                gc_drawPixel(x_cur, y_cur);
            }
            y_cur--;
        }
        if (isKeyPressed(KEY_DOWN) && y_cur < 240 / 2 + 50)
        {
            if (!lifetab[x_cur - (320 / 2 - 50)][y_cur - (240 / 2 - 50)])
            {
                globalColor = 255;
                gc_drawPixel(x_cur, y_cur);
            }
            y_cur++;
        }
        wait(5);
    }
    gc_CloseGraph();
}


le keys.h
Code: Tout sélectionner
//Tanks to Adriweb for this code

#ifndef INC_2048C_KEYS_H
#define INC_2048C_KEYS_H

#include <stdint.h>

#define startKeys() do { (*(uint8_t*)0xF50000) = 3; } while(0)
#define stopKeys()  do { (*(uint8_t*)0xF50000) = 0; } while(0)

// key format : 2 bytes : keys group last addr byte + read mask
#define KEY_2ND     0x1220
#define KEY_MODE    0x1240
#define KEY_DEL     0x1280
#define KEY_ALPHA   0x1480
#define KEY_CLEAR   0x1C40

#define KEY_DOWN    0x1E01
#define KEY_LEFT    0x1E02
#define KEY_RIGHT   0x1E04
#define KEY_UP      0x1E08

#define KEY_ARROWS  0x1E

// 'key' having to be a uint16_t (use the defines above)
#define isKeyPressed(key)           ((bool)((*((uint8_t*)(0xF50000 + (uint8_t)((key) >> 8)))) & ((uint8_t)((key) & 0xFF))))
#define isKeyGroupPressed(group)    ((bool)((*((uint8_t*)(0xF50000 + (uint8_t)((group)))))))

#endif //INC_2048C_KEYS_H


et le gc.h
Code: Tout sélectionner
#ifndef INC_GC_H
#define INC_GC_H

#include <stdint.h>

#define SCR_WIDTH   320
#define SCR_HEIGHT  240

static const uint16_t* screen_buf = (uint16_t*)0xD40000;
static const uint8_t* screen_buf_8bpp = (uint8_t*)0xD40000;
typedef uint16_t    color_t;

#define rgb2color(r, g, b)        ((color_t)((((r) << 8) & 0xf800) | (((g) << 3) & 0x07e0) | ((b) >> 3)))

#define gc_drawPixel(x, y)        *((uint16_t*)(screen_buf + (x) + (y)*SCR_WIDTH)) = globalColor;
#define gc_setColor(c)            globalColor = (c);
#define gc_setColorRGB(r, g, b)   globalColor = rgb2color((r), (g), (b));

#define gc_drawString(str, x, y) os_FontDrawText((str), (x), (y))
#define gc_drawStringTranp(str, x, y) os_FontDrawTransText((str), (x), (y))

extern color_t globalColor;

#endif //INC_2048C_GC_H


Je n'ai pas de screen à vous montrer, mais le fichier est en pièce jointe.
Merci de votre aide. :)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Dernière édition par Ti64CLi++ le 20 Mai 2016, 14:33, édité 1 fois.
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.5%
 
Messages: 3446
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [Projet]LifeGame

Message non lude Adriweb » 19 Mai 2016, 12:59

Hm, je vois que tu utilises les libraries de Mateo.
Donc tu n'as pas à reprendre mes keys.h et gc.h - utilise directement les fonctions des libraries graphc et keypadc.

Il y a déjà plusieurs jeux les utilisant, donc tu ne devrais pas avoir de problème à trouver des codes pour te familiariser avec :)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.1%
 
Messages: 14882
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet]LifeGame

Message non lude Wistaro » 19 Mai 2016, 13:01

Tu devrais peut-être utiliser le project builder aussi, non ?

Tu dis que ton programme ne fais pas le résultat voulu, c'est à dire?
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Projet]LifeGame

Message non lude Adriweb » 19 Mai 2016, 13:03

(Note: le project builder n'a pas encore les toutes dernières versions des libraries (et de la toolchain, cependant ces changements là ne seraient pas visibles pour l'utilisateur))

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.1%
 
Messages: 14882
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet]LifeGame

Message non lude Ti64CLi++ » 19 Mai 2016, 15:12

J'utilise le PB. Mais je n'arrive pas à installer CEmu pour prendre une vidéo de l'écran :(
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.5%
 
Messages: 3446
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [Projet]LifeGame

Message non lude Ti64CLi++ » 20 Mai 2016, 14:34

Petite modification, rajouté une fonction wait pour ralentir ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.5%
 
Messages: 3446
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [Projet]LifeGame

Message non lude Wistaro » 20 Mai 2016, 14:39

neuronix a écrit:Petite modification, rajouté une fonction wait pour ralentir ;)


C'est quoi cette fonction? Elle est là de base?
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
Avatar de l’utilisateur
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 88.5%
 
Messages: 3191
Images: 37
Inscription: 25 Fév 2013, 16:21
Localisation: Toulouse
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ingénieur en électronique
YouTube: Wistaro
Twitter/X: Wistaro
GitHub: Wistaro

Re: [Projet]LifeGame

Message non lude Ti64CLi++ » 20 Mai 2016, 14:41

Wistaro a écrit:Elle est lade base?

Ça veut dire quoi?
C'est une fonction de ma conception ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.5%
 
Messages: 3446
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [Projet]LifeGame

Message non lude Adriweb » 20 Mai 2016, 17:17

Oui on la voit au début, avec un for sur boot_WaitShort();

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.1%
 
Messages: 14882
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [Projet]LifeGame

Message non lude Clément.7 » 20 Mai 2016, 17:25

Bonne idée de le porter sur TI-83 Premium CE :) par contre il existe déjà un LifeGame (ou Game of Life) sur ce modèle, à voir ce que tu peux rajouter.

Pour le mien je l'ai recodé en Axe et maintenant même avec une grille de 25x20 il va trop vite pour qu'on profite de la simulation :D
Mais il ne fonctionne du coup pas sur Premium CE...
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Suivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 6 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2676 utilisateurs:
>2665 invités
>6 membres
>5 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)