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

Questions SDL ( touches clavier ? )

jejej
jejej
Niveau 9
18 janvier 2005 à 18:26:17

salut a tous ,
j´ai enfin commence a programmé un petit jeu en c++ / SDL .
Bon , c´est tres ( TRES ) basique , on a une barre au milieu de l´ecran , un joueur doit l´amener a droite , l´autre a gauche , celui qui appuis le plus vite sur sa touche dédiée gagne... :honte:

Mais , j´ai quand même un probleme ( le jeu est pas fini , mais j´ai tenu a obtenir une version jouable le plus vite possible 2 heures en fait )

j´ai mis temporairement les touches espace pour amener la barre a droite et entree ( return ) pour l´amener a gauche

Mais si un joueur reste appuyé sur espace par exemple , la barre va filer vers la droite , plus vite que si le joueur appuyait de multiples fois . .. le jeu perd donc la totalite des on pue d´interet . ..

Donc , si quelqu´un voyait comment resoudre ce probleme
en fait il doit bien y avoir une focntion
SDL_APPUIE et une autre SDL_RESTE_APPUYE , mais laquelle et comment s´en servir ?

et autre chose , j´ai pour projet de developper un petit snake , mais comment faire pour que le reste du corps suive la tete ?
pas facile ca :)

merci a tous

jejej
jejej
Niveau 9
18 janvier 2005 à 18:27:47

Ah oui autre chose , j´ai mis temporairement espace et entree comme touches , car je les connaissais - SDLK_SPACE , SDLK_RETURN -
mais je préfererais mettre ctrl gauche et ctrl droit , vous connaissez leur nom en sdl ? et pour les touches A , B , C ?

JeanYvesYves
JeanYvesYves
Niveau 10
18 janvier 2005 à 18:36:16

pour le nom des touches, tu ouvres le fichier SDL_keysym.h que tu trouveras dans ton repertoire include. Je te laisse le regarder et le comprendre.
Allez, je te donne la réponse pour le controle gauche :
SDLK_LCTRL

Ensuite, pour gérer les touches, je te conseille, simplement, un tableau en variables globales :

char key[400];

qui te dira, a tout moment : 1 si ta variables est en bas, 0 si elle est en haut.
Si tu as ce tableau, tu vois aisément comment bien manier les touches, non ? :)

Alors pour mettre le tableau a jour :
tu te fais une fonction :

void UpdateEvents()
{
while(SDL_PollEvent(&))
{
if ( event.type == SDL_KEYDOWN)
{
key[event.key.keysym.sym]=1;
}
if ( event.type == SDL_KEYUP)
{
key[event.key.keysym.sym]=0;
}
}
}

que tu appelleras dans ta boucle principale. ( met ta variables event en global aussi, c´est mieux.

Je te laisse analyser cela :)
Bon, pour le reste, le snake, tu te fais un tableau de N cases ( x,y) qui retient les N dernieres positions du serpent.
Il te suffit ensuite de mettre a jour le tableau en décalant les blocs :)

jejej
jejej
Niveau 9
18 janvier 2005 à 18:45:16

ok merci , je vais voir tout ca :)
et merci pour le snake , j´en etais rendu a un brute force qui aurait généré toutes les positions possibles de toutes les tailles d´un serpent . .. pres pour le 1 FPS ? :p)

JeanYvesYves
JeanYvesYves
Niveau 10
18 janvier 2005 à 18:47:05

lol ! les brute force ne sont a utiliser qu´en dernier recours : surtout dans le jeuxvideo, ou on boucle sans arret : il faut optimiser ! lol !

jejej
jejej
Niveau 9
19 janvier 2005 à 18:18:09

Un autre probleme : j´ai dessine un ecran de fond de 1024*768
deja il pese 2.25 mo alors que c´est un dessin fait avec paint , faudrait voir comment optimiser tout ca . ..

Mais le probleme , est que , lorsque je lance mon jeu , je ne vois qu´un bout de cette image etant donnée que je suis en 800*600
pour voir l´image en entier - qu´elle est belle en plus - je suis obligé de passer en 1024*768
la ca marche our le jeu , mais le jeu quitté , cette résoluton fait mal aux yeux .

Il faudrait peut etre redimensioner l´image , ou quelques chose . .. merci :)

JeanYvesYves
JeanYvesYves
Niveau 10
19 janvier 2005 à 18:25:27

tout a fait :) redimensionner :)
si tu fais un jeu en 800*600, et que tu y colles une image de 1024*768, normal que ça dépasse :)

je pense que tu as bien cerné le probleme :)

sinon, en ce qui concerne les BMP, c´est absolument normal :

un BMP est une image non compressée : petit calcul :
tu as un BMP 24 bits = 3 octets par pixels.
Tu as 1024*768 pixels :
cela te fait :
1024*768*3 = 2 359 296 octets

Tu rajoutes le Header du BMP qui fait 1078 octets :
un BMP 1024*768:24bpp fait donc :
2 359 296 + 1 078 = 2 360 374 octets...
en Mo, tu divises par 1024² et tu obtiens
2.251028.... Mo :)
CQFD :))

Pour optimiser, sur le disque, passe en PNG.
Apres, en RAM, il vaut mieux garder le BMP car, meme si ça prend de la place, traiter un BMP est immédiat.
Note : il y a des cartes graphiques qui compressent a la volée les textures en mémoire avec une simple compression RLE, OpenGL tire parti de ces cartes graphiques. SDL, je ne sais pas...

jejej
jejej
Niveau 9
20 janvier 2005 à 11:24:30

Merci , mais je voulais dire redimesnionner avec le programme
parceque dans les jeux , on peut generalement choisir sa résolution , et je ne crois pas que les dev aient fait une texture pour le 800*600 , 1024/768 etc
je sais pas si je m´explique bien
enfin tant pis , c fait g redimensionner avec paint :p)

J´en profite pour dire que la beta 0.2 de mon jeu sortira sur mon site web , avec les sources , dans moins d´une heure
en fait , des que j´aurais compris comment fonctionne un ftp ^^
si vous voulez y jeter un coup d´oeil . ..

jejej
jejej
Niveau 9
20 janvier 2005 à 11:25:05

tant qu´a faire , autant donner l´url :honte:
http://www.Memory-leak.fr.st

JeanYvesYves
JeanYvesYves
Niveau 10
20 janvier 2005 à 11:30:38

jette un oeil sur les AddOn :

SDL_rotozoom ou SDL_stretch ou SDL_gfx :)
tu y trouveras des fonctions qui font ton bonheur !
au pire, reprogrammes y :)

jejej
jejej
Niveau 9
20 janvier 2005 à 11:51:14

Tiens pendant que tu es la , tu peux m´explqieur comment mettre un fichier en transfert ^^ ? j´y arrives pas , j´ai du me tromper parceque la page bug la :p
j´utilise NVU comme editeur de pags web
merci

jejej
jejej
Niveau 9
20 janvier 2005 à 12:09:07

AAAH ca marche enfin ! !
allez y , vous pouvez désormais telecharger mon premeir jeu sur http://www.memory-leak.fr.st

bon , vous inquietez pas , je ferais pas un tel bruit pour tout mes jeux , mais celui la c le premier ^^
dites moi ce que vous en pensez svp
sans oublier que la version finale doit implémenter des sprites , un compteur de cliques et des modes 2vs2 , 2vs1 , 2vs3 etc
merci a tout ceux qui m´ont aidé a commencer :)

JeanYvesYves
JeanYvesYves
Niveau 10
20 janvier 2005 à 12:45:50

qu´appelles tu un " fichier en transfert" ?
le gestion d´un fichier pour sauver ta partie ?

jejej
jejej
Niveau 9
20 janvier 2005 à 12:47:34

euh je voulais dire mettre un fichier en telechargement sur mon site
mais j´ai reussi en fait
il suffit de ne pas mettre de majuscules ni d´accents dans le nom du fichier et ca roule :)

JeanYvesYves
JeanYvesYves
Niveau 10
20 janvier 2005 à 12:50:38

je viens d´essayer : sympa :)

pour corriger ton bug des touches ( si tu fais comme je t´ai dit plus haut):

/ / algo formel
if ( key[touche_control])
{
bouge_pinguin();
key[touche_control]=0; / / ajoute cela :)
}

JeanYvesYves
JeanYvesYves
Niveau 10
20 janvier 2005 à 12:55:40

" euh je voulais dire mettre un fichier en telechargement sur mon site
mais j´ai reussi en fait
il suffit de ne pas mettre de majuscules ni d´accents dans le nom du fichier et ca roule"

en effet : et tu remarqueras que si tu testes ton site en interne sous windows, ça marche.
la raison est simple : Windows ne fait pas attention aux maj et min ( la casse) ( fichier et FIchier ou FiChIeR c´est pareil)
cependant, quand tu heberges ton site, les serveurs sont souvent des serveurs UNIX. Et sous Unix, la casse compte...

jejej
jejej
Niveau 9
20 janvier 2005 à 12:57:58

ok merci
et je vais essayer ce que tu m´as dit
pour les touches

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