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

sdl c event_type

bossdu47
bossdu47
Niveau 10
26 septembre 2012 à 05:08:45

bonjour :pf:

Voilà mon problème :

int t_event()
{
int var=2;
onche:
if (SDL_WaitEvent(&event))
if (event.type == SDL_KEYDOWN)
printf("%d ",var); // affiche la variable donnée

SDL_Delay(50);
goto onche;
}

le programme bloque bien sur waitevent, mais il m'affiche rien quand j'appuie sur une touche. J'ai essayé de mettre qu'un = au lieu de 2 mais ça change rien :pf:
Et aussi quand je bouge la souris il passe le wait_event :pf:

Si quelqu'un a une idée :pf:

caelacanthe
caelacanthe
Niveau 10
26 septembre 2012 à 14:54:28

déja, est-ce que l'affichage de choses dans le terminal fonctionne correctement? :(

et utiliser un goto, quoi, même sur le site du zéro ils n'écrivent pas des trucs aussi gores. :oui:

lokilok
lokilok
Niveau 16
26 septembre 2012 à 15:54:32

Visiblement tu n'as pas trop compris ce que tu as fais je pense :(

bossdu47
bossdu47
Niveau 10
26 septembre 2012 à 16:47:39

oui ça fonctionne bien dans le terminal je fais ça pour afficher les variables
goto je suis au courant et ça m'est égal priorité au fait de réussir à faire fonctionner le programme et après éventuelle optimisation

et puis bah j'ai compris je crois :-(

int t_event() // sous fonction
{
int var=2;
onche:
if (SDL_WaitEvent(&event)) // le programme attend qu'il y ait un événement
if (event.type == SDL_KEYDOWN) // si une touche est appuyée
printf("%d ",var); // affiche la variable donnée

SDL_Delay(50); // attend un peu
goto onche;
}

après peut-être que je me trompe mais bon... merci pour les réponses quand même, si j'ai pas d'autres pistes plus qu'à me reprendre la tête dessus aujourd'hui :hap:

caelacanthe
caelacanthe
Niveau 10
26 septembre 2012 à 17:06:00

où est défini la variable event, en fait? :(

bossdu47
bossdu47
Niveau 10
26 septembre 2012 à 18:05:38

oui pardon je me suis dis que j'allais mettre le minimum de code sinon ce serait le bordel dans le post.

la variable event est défini au début du programme : SDL_Event event;

pour faire plus simple ce code :

int main(int argc, char *argv[])
{
int var=2; SDL_Delay(50);
do {
SDL_WaitEvent(&event);
} while(event.type != SDL_KEYDOWN);
}

ne réagit pas et tourne en boucle quand j'appuie sur une touche de clavier
donc le problème vient de
while(event.type != SDL_KEYDOWN);

comme si il considérait pas l'appui de touche comme un event :fou:
bon je vais dirais si je trouve la solution, le problème doit encore être un truc à dormir debout :pf:
merci

bossdu47
bossdu47
Niveau 10
27 septembre 2012 à 03:17:41

bon après quelques heures j'ai juste trouvé que le code fonctionne au début du programme, mais pas dans la sous-fonction, pourtant je vois pas ce qui pourrait manquer :hum:

caelacanthe
caelacanthe
Niveau 10
27 septembre 2012 à 10:46:09

"int var=2; SDL_Delay(50); "

:d) je suis pas sûr de cette utilisation de sdl_delay, en effet, elle se contente de bloquer le programme pendant le temps donné, ici, 50 millisecondes. :hap:

et tu as essayé de trouver d'autres tutoriaux sur les interactions avec SDL sur le net? :(

bossdu47
bossdu47
Niveau 10
27 septembre 2012 à 14:21:08

merci pour la réponse,
en fait je me suis rendu compte après avoir posté ce code que cette ligne servait à rien dans le dernier code posté donc tu as raison là dessus

et bahh je fais que chercher mais bon voilà le problème débile qui me bloque complètement, quelle prise de tête, j'avais codé un autre jeu avant, c'était tellement plus accessible bien que 100% code, quelle merde ce code pur, avec un peu de chance je parviendrais à un morceau de solution si ça me dégoute pas avant :-(

je dirais si je trouve quelque chose

bossdu47
bossdu47
Niveau 10
27 septembre 2012 à 14:27:32

dsl, juste un coup de gueule, mais bon, vu que le code se fout de ma gueule il l'a pas volé :hap:

hyrulink2
hyrulink2
Niveau 7
27 septembre 2012 à 14:45:46

Dans mes souvenirs ils fallait initialiser la SDL avant de l'utiliser, là je ne vois pas d'initialisation. Il doit y avoir une fonction genre SDL_Init, cherche dans la doc.

bossdu47
bossdu47
Niveau 10
28 septembre 2012 à 02:55:57

ça fonctionne bien et c'est initialisé mais merci quand même :hap:

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