Jeux Libres

Envie de créer un jeu vidéo ?   Le site qui vous accompagne de A à Z.


» Les Forums » A propos de la création de jeux vidéo » j'ai 2 problemes


Aller à la page : 1.

j'ai 2 problemes
Anubis



Grade : Nouveau venu
Inscrit le: 10 Jan 2008, 14:43
Ecrit le: 10 Jan 2008, 16:14             Message non corrigé

Bonjour, je suis nouveau. J'utilise CodeBlocks et quand je creer un nouveau projet et que je modifi le main.c, j'obtien un message en bas, le voici:
http://img185.imageshack.us/img185/7750/prblmav0.th.jpg
Et sa a chaque fois et je ne comprends pas. Sinon je peu toujours l'utiliser sur mon PC portable et là sa fonctione. Et mon 2e probléme c'est que, j'aimerais qu'avec "scanf" ont puisse se souvenir d'un nom. Par exemple:
long nom;

printf("Saisissez votre nom.\n")
scanf("%f", &nom

printf("Bonjour %d.\n")

Et j'obtien tout le temps "bonjour 2293620", et quand je remplace %d par %f j'obtient "bonjour 000000", donc voilà j'espere que vous pourrez m'aider, je vous en remerci d'avance.

________
@NuBi$rONEr
  Profil Mail
David



Grade : Expert
Inscrit le: 11 Mai 2005, 20:30
Ecrit le: 10 Jan 2008, 20:33             Message non corrigé

Pour l'érreur de compilation, tu fait bien de le dire. En fait, il faut ajouter un retour à la ligne tout à la fin du code source.

Pour le scanf avec le nom, c'est un peu compliqué. On en est pas encore là.
Mais c'est bien poser la question, j'vais essayer de repondre clairement.

Mémoriser un caractere dans une variable

Pour l'instant, nous avons vu qu'il existe différent type de variables pour stocker des nombres de tailles différentes.
Maintenant, il va faloir me faire confience, ça fait bizzard mais... un caractère est un nombre entier.
D'ailleurs, un caractère est un petit nombre entier : un octets suffit.

En regardant le tableau des types de variables existants, on vois que pour déclarer un variable d'un octet on utilise le type char.

Pour déclarer une variable qui pourrait contenir un caractère, on ferra :

char caractere;
... de la même façon qu'on faisait
int nombre;

Pour l'afficher, on ferra

printf("%c", caractère);

Voici un petit code pour comprendre :

#include <stdio.h>
#include <stdlib.h>

int main()
{
        char caractere; // un octet

        scanf("%d", &caractere); // On initialise l'octet (à 97 par exemple)

        printf("%c", caractere); // On l'affiche en temps que caractère
        return 0;
}

Quand tu testera ce code, commence par initialiser caractere à 97. Il s'agit du caractère 'a'.

97
a

97 -> a
98 -> b
99 -> c
...

Sache quand même que ce n'est pas une utilisation "normale" ; mais c'est pour bien comprendre.
Si tu veux récupérer un caractère au lieu d'un nombre, tu peux faire :

scanf("%c", &caractere);

a
a

Mémoriser un mot

En C, la mémorisation d'un mot est assez compliqué. En effet, il n'existe pas de type permétant de mémoriser un mot. Il va faloir déclarer un tableau de caractère (plusieurs variables de type char côte à côte).

Et on mémorisera chaque caractère du mot dans une variable différente de ce tableau.
Pour déclarer un tableau de caractère, on fait comme ceci :

char tableauDeCaractere[100]; // 100 variables de type char (tableau de 100 char)

Ensuite, pour récupérer un mot, il faut faire :

scanf("%s", tableauDeCaractere);

Non, je n'ai pas oublié le '&'. Cette fois c'est normal. On vera pourquoi plus tard.

Et pour l'affichage, c'est comme ça :

print("%s", tableauDeCaractere);

Voici ce que tu aurrais sans doute fait si tu avais eu ces expliquations :

#include <stdio.h>
#include <stdlib.h>

int main()
{
        char tableauDeCaracteres[100]; // On prépart 100 caractères

        printf("Saisissez votre nom : ");
        scanf("%s", tableauDeCaracteres); // On récupère le prénom

        printf("Bonjour %s.\n", tableauDeCaracteres); // Et on affiche

        return 0;
}

J'ai passé sous silence pas mal de petites choses auquel il faut théoriquement faire attention. J'ai surtout cherché à expliquer simplement. Ca peut paraitre un peu bidouille, j'avou. Pourtant, c'est comme cas que l'on fait en C.

En C++, il existe l'objet string. C'est beaucoup plus propre. L'équivalent en C++ serait :

#include <iostream>

using namespace std;

int main()
{
        string nom; // On prévois de réserver de la place pour le nom

        cout << "Saisissez votre nom : ";
        cin  >> nom; // On récupère le nom

        cout << "Bonjour " << nom << "." << std::endl;
        return 0;
}

Et puis finalement, tu vera que pour les jeux on ne s'en sert pas telement.

PS : Je tien à te féliciter pour ton premier poste. Expliquation claire et en image, le problème peu être résolu beaucoup plus facilement. Prenez en de la graine les autres.

________
Apprenez à créer votre propre FPS en C++ avec OpenGL. C'est pas dur ! :-)
  Profil Mail
Anubis



Grade : Nouveau venu
Inscrit le: 10 Jan 2008, 14:43
Ecrit le: 10 Jan 2008, 22:19             Message non corrigé

haaa super, merci beaucoup, sa fonctionne a merveille   et je tenais a te féliciter pour tout se que tu fait et apprends aux autres, se n'est pas rien. J'ai toujours voulu apprendre la programation mais souvent les personnes qui faisaient des tuto étaient mal expliqués ou ils balancaient tout comme sa de but en blanc. Enfin bref toutes mes félicitations encore et merci pour tout  

________
@NuBi$rONEr
  Profil Mail
 


Aller à la page : 1.


Hébergeur du site : 1and1.fr



Site de création de Jeux Vidéo
Apprenez à créer vos propres Jeux Video

1389367 pages ont été consultées sur le site !
Dont 1424 pages pendant les 24 dernières heures.

Page générée en 0.391 secondes


Nos partenaires
- Otium Production : Aide aux débutants à créer leurs jeux
- Les bibliothèques de développement de jeux vidéo


  © 2005-2012 www.jeux-libres.com - Toute reproduction totale ou partielle du contenu de ce site est strictement interdite.