CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C: charger depuis un tableau

clmin
clmin
Niveau 4
15 juin 2005 à 23:32:01

Tu sais, je passe beaucoup de tempssur ce forum depuis quelque semaines ( meme si ca ne ce voit pas: je suis timide donc j´utilise abusivement la fonction recherche) et je me demande comment vous faites pour aider autant de gens comme ca, toi et quelque autres...

En tout cas c´est vraiment tres sympa

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:35:07

Attention, la variable " bon" n´existe que dans le main parce que tu l´as déclaré dans le main.
ça c´est le premier soucis.
Le second, c´est que SDL te teste l´appui que d´une seule touche a la fois :

event.key.keysym.sym
te donne quelle touche a été pressée.
donc ta fonction réponse , voici ce qu´elle fait :

le premiere while(1) la fait tourner a l´infini.
Le deuxieme while dit :

tant qu´il y a un evenement dans la liste, recupere cet evenement dans event,
puis :
si cet evenement est l´appui d´une touche,
alors,
si cette touche est . ... alors sort de la fonction.

Ici, tu regardes si la touche est " bon" ?
il n´y a pas de touche " bon"
ça ne peut pas marcher :)

Que veux tu exactement que cette fonction fasse ? :)

PS : moi aussi je suis maso et j´adore la prog :)

dynoplasmma
dynoplasmma
Niveau 9
15 juin 2005 à 23:37:28

c´est un tete a tete la, on dirait un tchat.

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:38:47

" En tout cas c´est vraiment tres sympa"
merci :-)

Si mon chef voyait le temps que je passe sur le forum, il ne serait pas content, lol !
En fait, je suis programmeur de métier, donc je fais du C/C++ toute la journée. De temps en temps, je refraichis la fenetre du forum pour me changer les idées, je fais plein de mini pauses de 2 - 3 minutes, c´est pour ça que je suis la souvent :)

clmin
clmin
Niveau 4
15 juin 2005 à 23:44:45

je voudrai qu´elle bloque le jeu jusqu´a avoir la bonne reponse.

J´avai pensé a faire un truc genre bon en tableau et dissocier la reponse:

tant qu´il y a un evenement dans la liste, recupere cet evenement dans event,
puis :
si cet evenement est l´appui d´une touche,
alors,
si cette touche est bon[0] continuer

idem pour bon[1],...

Je vois alors 2 pb:

1°/comment arreter?
on peut decider char bon[50] ( ou char*) pour parrer a tout eventualiter et faire un for(i=0;i<50;i++)
ca marcherais mais bon...

2°/Le resultat serai faussé:
ex: si la reponse est bon="gagne"

g->reconnu
t->boucle
a->reconu
g->reconnu
n->reconnu
e->reconnu

je sortirai de la boucle alors que j´aurai tapé gtagne au lieu de gagne.

Je ne vois pas vraiment comment resoudre ces probleme, mais il y a peut-etre une solution plus facile

clmin
clmin
Niveau 4
15 juin 2005 à 23:46:36

Oui je me disai bien qu´avec ton niveau...

Tu programme quoi, si ce n´est pas indiscret?

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:47:21

d´accord, en gros, il faut taper consécutivement " bon" par exemple, pour sortir de reponse, et tant que tu ne tapes pas cela, tu restes coincé, c´est ça ?
attend, je vais te faire la fonction

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:49:02

je fais de logiciels spécialisés pour les entreprises qui fabriquent leur pieces grace a des logiciels de CFAO :
je recupere les données 3D des objets ( souvent formés de courbes mathématiques) et je dois les transcoder en d´autres formats, demandés par les clients. Je fais des programmes qui automatisent ce genre de traitements, de façon a ce que le client, en 2 clics, aie ce qu´il veut...

clmin
clmin
Niveau 4
15 juin 2005 à 23:51:35

Oui c´est ca.

C´est un prog que ma soeur egyptomaniaque m´a demander pour reconnaitre les hieroglyphes.

En fait il est fini et il marche ( elle en est tres contente), mais j´aimerai le rendre moins gros, pour m´entrainer.

En fait depuis quelque temps je passe le plus clair de mon temps a faire des programme sur tout et n´importe quoi pour ma famille.
C´est tres...formateur :)

clmin
clmin
Niveau 4
15 juin 2005 à 23:56:05

CFAO me dit quelque chose...

Je crois que c´est le nom du systeme dont on se servais en prépa.

En science de l´ingenieur pour fabriquer des trucs impossibles avec un millions et demi de parametres ( j´exagere mais ce truc ne m´aimait pas: dans les simulations mes pieces se cassait toujours la g*****, ou gripait, ou... bon je me tait :rouge: )

C´est ca?

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:57:42

essaie ça :)

il suffit que tu appelles

reponse("bon");
et normalement, tu ne peux sortir que si tu tapes " bon".
( enleve le SDL_FULLSCREEN pour le test, au cas ou ça ne marche pas et que tu sois coincé dans la fonction reponse)

char getSDLkey()
{
while(1)
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
return event.key.keysym.sym;
}
}
}
}

void reponse(char* code)
{
int curs=0;
char key;
while(curs<strlen(code))
{
key=getSDLkey();
if ( key==code[curs])
curs++;
else
curs=0;
}
}

Ptival
Ptival
Niveau 10
15 juin 2005 à 23:59:04

Oui c´est ça :)

Conception et Fabrication Assistées par Ordinateur ( je crois)

JeanYvesYves
JeanYvesYves
Niveau 10
15 juin 2005 à 23:59:05

voila, CFAO, c´est ça, c´est des pieces, définies par des milliers de parametres topologiques et surfaciques, destinés a rendre une piece usinable. Les fichiers sur lesquels on bosse sont énormes.

JeanYvesYves
JeanYvesYves
Niveau 10
16 juin 2005 à 00:05:19

ça marche, par contre, ne rentre que des lettres miniscules : pour sdl, de façon standard, le clavier est destiné au jeu. et dans un jeu, on ne différencie pas un A d´un a, c´est juste la touche A :) et donc SDL renvoie la lettre en minuscule :)

donc si tu tapes : " bon", ça marche, si tu tapes " BON", ça n´ira pas :)

tu vois le fonctionnement des fonctions que je t´ai envoyé ci dessus ?

clmin
clmin
Niveau 4
16 juin 2005 à 00:07:42

:ok:
tu m´etonne qu´apres tu puisse...

oulala.

pour ton prog j´appelle reponse(hiero[0]);

avec hiero="aleph";

mais ca boucle quand meme.

idem avec reponse("aleph");

et bien sur reponse(aleph)
ou reponse(´aleph´) n´a pas de sens.

JeanYvesYves
JeanYvesYves
Niveau 10
16 juin 2005 à 00:10:26

arf, zut, ça marchait avec " bon" :)
je V débugguer ça avec " aleph", voir pourquoi c´est pas pareil

JeanYvesYves
JeanYvesYves
Niveau 10
16 juin 2005 à 00:12:30

oula, je comprends... clavier QWERTY,
ça doit marcher si tu tapes :

qleph

je vais voir si je peux changer ça :)

clmin
clmin
Niveau 4
16 juin 2005 à 00:14:26

char getSDLkey()
{
while(1) / /boucle infini
{
while(SDL_PollEvent(&))
/ /boucle pour chercher l´evenement
{
if ( event.type == SDL_KEYDOWN)
/ /si l´evenement est une touche enfoncée
{
return event.key.keysym.sym;
/ /retourne la touche en question
}
}
}
}

void reponse(char* code)
{
int curs=0; / /conteur ( nbre de caract ds code)
char key;
while(curs<strlen(code))
/ /tant que curs<nbre de caract
{
key=getSDLkey();
/ /fonction precedente: quelle touche est enfoncée
if ( key==code[curs])
/ /si c´est celui dont on est entrain de / /s´occupper on passe au suivant
curs++;
else
curs=0;
/ /sinon le conteur est a 0 est on recommence
}
}

J´ai bien tout compris?

Si oui ca me semble logique...

Ca devrai marcher, non?

clmin
clmin
Niveau 4
16 juin 2005 à 00:17:38

QWERTY c´est le clavier americain?

Il faudrai faire un truc:
if(code[curs]=´a´)
code[curse]=´q´;
if(...

pour tout les cas.

Je pense pouvoir le faire mais je ne sais pas quelles sont les touches inversées.

JeanYvesYves
JeanYvesYves
Niveau 10
16 juin 2005 à 00:18:46

je vais te faire ça de façon compacte :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment