casse brique sur PC G850V en C

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

casse brique sur PC G850V en C

Message par charognard » 13 mai 2009 14:27

Je l'ai fini hier soir très tard (ou plutot ce matin de très bonne heure :lol: ) !!!

Ne programmant en C que depuis 1 semaine date à laquele j'ai eu mon PC je vous demande d'etre indulgeant.
depuis le temps que je voulais m'y mettre !
le programme est tout a fait jouable mais ne demande qu'a etre amelioré

alors pour utilisé le programme
aller en mode basic
frapper MON
puis
user 0400
on charge ensuite ces 2 programmes

keyasm.h

Code : Tout sélectionner

10 void keyasm(unsigned short adr)
20 {
30  poke(adr++,205);
40  poke(adr++,83);
50  poke(adr++,190);
60  poke(adr++,111);
70  poke(adr++,38);
80  poke(adr++,0);
90  poke(adr++,201);
100 }

brick.c

Code : Tout sélectionner

1 /*****casse-brique******/
2 /****adaptation en C****/
3 /****sur SHARP G850V****/
5 /****par charognard*****/
10 #define m 65535
15 #define vit 250
20 #include"keyasm.h"
30 void vie(int nbr)
40 {
50  int b;
60  gcursor(2,18);
70  for(b=1;b<=nbr;b++) {
80   gprint("0207070707070200");
90  }
100  gprint("0000000000000000");
110 }
120 main()
130 {
140 int vi=5,sc=0,x=96,y=10,ox=x,oy=y,rx=3,ry=2,bx=x,obx=x,b;
150  int inkey=0x300;
160  keyasm(inkey);
170  printf("Score:1");
180  line(59,0,59,30,0,m,0);
190  line(135,0,135,30,0,m,0);
200  line(60,0,134,3,0,m,2);
210  line(60,6,134,9,0,m,2);
220  vie(vi);
230  do
240  {
250   line(bx,30,bx+8,30,0,m,0);
255   for(b=1;b<vit;++b){}
260   x+=rx;y+=ry;
270   if(x<60|x>132)
280   {
290    beep(10,10,1);
300    rx=-rx;x+=2*rx;
310   }
320   if(y>=30)
330   {
340    if(bx<=ox&&ox<bx+9)
350    {
360     beep(10,20,1);
370     ry=-ry;y=oy+ry;
380    } else {
390     if(ox+rx==bx||x-rx==bx+9)
400      {
410       beep(10,20,1);
420       ry=-ry;rx=-rx;y=oy+ry;x=ox+rx;
430      } else {
440       line(ox,oy,ox+2,oy+1,1,m,1);
441       line(x,y,x+2,y+1,0,m,1);
442       vi=vi-1;
443       vie(vi);
444       for(b=1;b<256;b+=3)
445        {
446          beep(2,b,1);
447        }
448       line(x,y,x+2,y+1,1,m,1);
449       line(bx,30,bx+8,30,1,m,0);
450       x=96;y=10;ox=x;oy=y;rx=3;ry=2;bx=x;obx=x;
455      }
460    }
465   } else {
470    if(y==-2)
480    {
490     beep(10,20,1);
500     ry=-ry;y=oy+ry;
510    }
520    if (point(x,y))
530    {
540     beep(10,10,1);
550     sc+=5;
560     gotoxy(6,0);printf("%d",sc);
570     line(x,y,x+2,y+1,1,m,1);
580     y-=ry;ry=-ry;
590    }
595    b=call(inkey,0);
596    bx=bx+6*(b==34)*(bx<123)-6*(b==33)*(bx>63);
597    line(obx,30,obx+8,30,1,m,0);
598    line(bx,30,bx+8,30,0,m,0);
599    obx=bx;
600    line(x,y,x+2,y+1,0,m,1);
610    line(ox,oy,ox+2,oy+1,1,m,1);
620    ox=x;oy=y;
625   }
630  }
640  while(vi>0);
650 }
et on lance le deuxième

remarquez :
- La variable vit permettant de regler la vitesse, pour info en basic cette boucle est inutile (ligne15)
- La gestion du son pour peut d'avoir un piezo interne oule boitier USB de ralf (ligne 290...)
- Fonction inkey en assembleur car en C sur sharp il ni a pas !! (ligne 595)


à noter ce programme est une adaptation d'un programme basic trouvé sur un site pour SHARP E500

jmplinux
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1286
Inscription : 15 oct. 2006 23:11
Localisation : Dans le Jurassique, au fond à gauche

Message par jmplinux » 13 mai 2009 15:34

Chapeau, pour quelqu'un qui débute le C depuis une semaine et produit déjà un programme, respect 8)

J'ai hâte de recevoir ce 850V :P
Recherche active :
Dispos : Casio PB-700, CC-40
Don : Ti LCD Programmer (j'ai acheté ça 25€ et franchement ... je n'arrive même pas à ouvrir une huitre avec)
PC3000 en cours de réparation(jxano)

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Message par charognard » 13 mai 2009 15:35

jmplinux a écrit :Chapeau, pour quelqu'un qui débute le C depuis une semaine et produit déjà un programme, respect 8)

J'ai hâte de recevoir ce 850V :P
Merci
vivement que tu ai le tien, je me sentirais moins seul.

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Message par gege » 13 mai 2009 15:39

Pas mal du tout !

Ton code "sinue" encore un peu...
et des trucs comme ceci :

Code : Tout sélectionner

442       vi=vi-1; 
443       vie(vi);
seraient plutôt tapés selon :

Code : Tout sélectionner

442       vie(--vi);
par un "habitué"... ça va venir ;-)

D'ailleurs ton code suppose implicitement que le nombre de vie ne peut pas diminuer de plus de 1 entre chaque appel à vie().
Ce genre de pré-supposition documentée nulle part a déjà planté des trucs très très gros... ici c'est OK.
Pour éviter cela on a des concepts du genre "programmation défensive" ou "par contrat" etc, mais là ce n'est plus spécifiquement lié au C.

Ah ça me rappelle pas mal de souvenirs.
G.E.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Message par charognard » 13 mai 2009 15:41

je connais effectivement mais je pense encore BASIC ou PASCAL :oops:

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Message par charognard » 13 mai 2009 15:45

à noter aussi les paramétres du bip sont inversés par rapport au basic.
cette fonction étant non documentée dans le manuel (normal officiellement le beep n'existe pas)


j'aurais bien aimé aussi une fonction ELSE IF plutot que ELSE { if ..{

Avatar de l’utilisateur
jvernet
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7838
Inscription : 24 mai 2002 09:57
Localisation : France 69
Contact :

Message par jvernet » 13 mai 2009 15:59

C'est etonnement rapide, je trouve. J'avais essayé d'en faire un sur le E500, en basic, mais beaucoup trop lent !


Bravo. Mon fils fait mumuse avec depuis 10 minutes ;).


Jerome
"l'ordinateur et l'homme sont les deux opposés les plus intégraux qui existent. L'homme est lent, peu rigoureux et très intuitif. L'ordinateur est super rapide, très rigoureux et complètement con."

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Message par charognard » 13 mai 2009 16:00

c'est méga rapide.
on pourrait même étoffer les fonctionnalités du jeu:
- angle suivant position balle sur raquette
- bonus genre arkanoïd (grande raquette, double balle ....)
- surface de jeux plus importante
- gestion de niveau
- briques non destructibles
- etc ....

content pour ton gosse

j'ai des déclinaison basic/RPL pour
PC1600 (très jouable)
canon X07 (très jouable)
PC1360 (trop lent)
tandy TRS 80 model 100 (très jouable)
HP48GX (gestion clavier méga merdique avec fort ralentissement)
....


bientot sur Z1GR quand je l'aurais reçu (mais j'aurais pas la doc avec :cry: )
personne n'aurait la liste des méthodes ?
Dernière édition par charognard le 13 mai 2009 17:00, édité 1 fois.

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Message par gege » 13 mai 2009 16:39

charognard a écrit :j'aurais bien aimé aussi une fonction ELSE IF plutot que ELSE { if ..{
Oui mais en fait inutile (donc absent du langage ;-), car on peut (et il serait mieux d' ) écrire :

Code : Tout sélectionner

else if (..) { ... }
qui est vraiment très proche et économise un jeu de {} -- mais à toi de trouver ton style.

A mon avis le C est LE langage le plus simple et le plus propre. D'ailleurs le manuel (Kernighan & Richie) est ultra-mince. Small is beautiful !

G.E.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Message par charognard » 13 mai 2009 16:55

nickel c'est ça que je voulais :lol:

Avatar de l’utilisateur
Professeur_Octopus
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 942
Inscription : 17 oct. 2003 23:38
Localisation : Ormeignies Hainaut (Belgique)
Contact :

Message par Professeur_Octopus » 13 mai 2009 17:18

Salut Charo

Merci pour le soft, j'ai hâte d'essayer ça.
Question à tous les spécialistes du C, il y aurait moyen de tester ça avec gcc en console sous linux ?
charognard a écrit :Merci
vivement que tu ai le tien, je me sentirais moins seul.
Ben, on sera 3 alors :mrgreen: J'ai payé mon 850S cet après-midi, maintenant, j'attends la livraison 8) :D

A bientôt,

Octopus
Savant fou spécialiste en coups tordus et foireux ;-)

J'ai un moog !! Enfin ... Presque ;)

Image Image

Avatar de l’utilisateur
Paul Tergeist
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2417
Inscription : 15 oct. 2007 15:50
Localisation : 3ème planète après le soleil

Message par Paul Tergeist » 13 mai 2009 17:30

Bravo Charo,

Pour quelqu'un qui a demarré le C il y a une semaine c'est épatant, je rejoints JMP sur ce point.

Ta routine Inkey va rendre service à pas mal de monde.

Chapeau

Paul

P.S. : retrouvez cette routine et bien d'autres sur le site
http://oldcalculettes.free.fr
Tarif réduit pour les adultes blondes à forte poitrine
Il y a 10 catégories de personnes dans le monde. Celle qui connait le binaire et l'autre.

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Message par jxano » 13 mai 2009 17:50

Professeur_Octopus a écrit :Question à tous les spécialistes du C, il y aurait moyen de tester ça avec gcc en console sous linux ?
Je crois que ça risque de coincer avec les routines graphiques, à moins d'écrire une bibliothèque d'émulation de l'écran du 850...
Programmeur abscons.

pascal_meheut
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 307
Inscription : 25 sept. 2008 06:40

Message par pascal_meheut » 13 mai 2009 17:56

En curses/ncurses, ca doit être tentable. J'attends déjà de voir le portage sur Z1-GR qui attend notre ami à son bureau de poste.
Pas mal de HP de la 55 à la 48, 97.... Casio 702p, 890P, AI-1000 et PB-2000C, WP34s dont j'écris les émulateurs et la version iOS
Je cherche les modules Pascal et Prolog pour la PB-2000C

Avatar de l’utilisateur
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2498
Inscription : 03 mai 2008 15:33
Localisation : Grenoble

Message par zpalm » 13 mai 2009 18:11

Comparaison 850S, 850V, 850VS:

Français traduit du japonais par Google
Anglais traduit du japonais par Google

Le 850V semble le plus intéressant: meilleur écran, meilleure autonomie, support des PIC, même si on perd les instructions pour le lecteur de K7.

Le 850VS semble être une version plus légère (10g de moins) du 850V.
Le partie sur le changement du manuel du 850V au 850VS : "Assembleur et langage machine dispose d'un moniteur "mini-assembleur liste I / O méthode de transmission de" supprimer les" me laisse perplexe....

Répondre

Revenir vers « Tous les Pockets »