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

J´aide les personne en C/C++

lag-it
lag-it
Niveau 10
24 août 2004 à 15:54:32

http://www.pearsoneducation.fr/espace/livre.asp?idLivre=1617&idEspace=73&idTheme=24&idSousTheme=66&pOuvert=0

Neofungamer
Neofungamer
Niveau 22
24 août 2004 à 16:00:19

question: Je viens de decouvrir que j´avais C++ buildr version pro complete license et tout et j´aimerais votre avis sur ce prog ainsi que qqe information avant de l´installer ( je l´avais eu avec un bouquin)

ELEKT_X
ELEKT_X
Niveau 4
24 août 2004 à 16:05:21

Merci pour le renseignement, je vais essayer de trouver ce bouquin.
je vais peut-être abuser de ta patience et de ta gentillesse mais je voulais savoir qu´est ce que c´est que les " sprites.h",et toutes ces autres commandes.

lag-it
lag-it
Niveau 10
24 août 2004 à 17:00:39

Ca me dérange pas du tout d´aider au contraire :)
Bon je suppose que tu veux programmer des applications graphiques sur 89, aussi je vais te faire une petite présentation des fonctions et techniques mise en oeuvre pour y parvenir.
J´espère que tu sais ce qu´est un pointeur, car sinon tu ne comprendra pas tout au début.

:d) L´écran

Déjà il est important de noter que ses dimensions sont de 160x100 sur ti89.

Bon ca c´est plus pour ta culture personnelle qu´autre chose, mais tu peux accéder à n´importe quel pixel de l´écran de ta 89 en accédant au buffer écran, un espace mémoire réservé qui renferme l´état de chaque pixel de l´écran.
Celui-ci se trouve à l´addresse 0x4C00, mais pour éviter de t´en rappeler, utilise LCD_MEM.
Petit exemple tout bête pour voir le truc :

  1. include < tigcclib.h>

void _main(void)
{
     char *bufferEcran = LCD_MEM; / / Pointeur vers l´écran
     *bufferEcran = 0; / / On met le premier octet à 0
     ngetchx(); / / Attends la pression d´une touche
}

Bon alors comme je l´ai dit avant, cela peu sembler bizarre pour un débutant, mais reviens y après si tu ne suis pas.
Ce que l´on fait simplement, c´est de mettre à zero le premier octet du buffer écran grâce à un pointeur vers celui-ci.
Comme l´écran est en noir et blanc, 1 octet = 8 bits = 8 pixels.
Enutilisant *(bufferEcran+1) = 0;, on effacerait les 8 pixels suivant et ainsi de suite ( tu verra pourquoi plus tard dans le chapitre sur l´arithmétique des pointeurs).
C´était juste une introduction pour que tu aie quelques notions. Si ta rien compris c´est normal au début, reviens y après avoir lu le livre ou un tuto car j´emploie déjà quelques notions un peu avancées.

( Note encore plus avancée : le buffer écran à la même dimension sur 89, 92, 92+, V200, puisque le système est le même, ce qui veut dire que ton écran virtuel de 89 est plus grand que l´écran réel. Cela permet quelques supercheries comme l´implantation d´un scrolling ultra-rapide en C, mais on verra plus tard :) )

Heureusement pour nous simplifier grandement la tâche viennent les :

:d) Fonctions graphiques

Dans ce domaine là, TIGCC est très complet puisqu´il t´offre des fonctions pour faire a peu près ce que tu veux avec l´écran.

( Note: Généralement à la création d´un nouveau projet, TIGCC inclut par défaut tout les fichier . h nécessaire ( #include < tigcclib.h>), je te donne le nom des . h juste pour que tu sache ou ca se trouve, pour aller voir dans l´aide notament )

graph.h renferme toute les fonctions de base permettant de tracer des lignes, des cercles, des carrés, etc . ..

Exemple :

DrawLine( 10, 10, 20, 20, A_NORMAL ) ;
Va te tracer un ligne en tre les pixels de coordonné ( 10,10) et ( 20,20) à l´écran.

A_NORMAL spécifie le mode de tracage. Va voir dans l´aide pour plus d´infos. Tu peux nottament tracer en inversant les pixels ( XOR).

Pour écrire du texte, il y a :

DrawStr( 0, 0, " Hello, world ! ", A_NORMAL ) ;

Cependant j´ai tendance à utiliser la fonction :

printf_xy( 10, 10, " Hello, world ! " ) ;
Puisqu´elle permet de formater directement lors du passage d´arguments.

Et il y en a comme ca plein d´autres, va voir la doc, rubrique " Header Files", " graph.h" pour plus d´infos ( en anglais, mais programmer en C, c´ets quasi-obligatoirement passer par l´anglais ) .

Pour faire des jeux et afficher des images, il y a également :

:d) Les sprites

( voir sprite.h)
Diponible en 3 version : Sprite8, Sprite16, Sprite32 pour des sprites de respectivement 8xZ, 16xZ, 32xZ ( ou Z est un nombre quelconque), ces fonctions permettent simplement d´afficher rapidement une image constituée de plusieurs octets.
Démontronstration :

On inclut les libs tout d´abord :

  1. include < tigcclib.h>

Ensuite on va définir notre sprite. On va en faire un de 8x8. Pour ce faire, on va avoir besoin d´un tableau de 8 octets ( 1 octet = 8 bits et dons 8 pixels je rappelle). Ainsi, chaque octet représentera une ligne de 8 pixels qui représentera notre image.
Petite note : peut être ne le sais tu pas encore, mais en C, on peut représenter les nombres en plusieures base : 10, 8 ( octale) et 16 ( hexadécimale).
Exemple :
10 ( base 10) = 0xF ( base 16)
16 ( base 10) = 0x10 ( base 16) . ..

La 89 peut te faire ces conversions.
L´avantage de l´héxadécimal, c´est que cela permet de représenter facilement 2 octets : 0xFF est plus concis que 255.

La 89 permet en plus l´emploi du type binaire, noté 0b... Cela permet de représenter facilement des sprites, notament :

unsigned char image[8] = {
0b10000001,
0b01000010,
0b00100100,
0b00011000,
0b00011000,
0b00100100,
0b01000010,
0b10000001 };

Ca représente une croix.
Viens ensuite notre fonction main :

void _main( void )
{
    clrscr(); / / Efface l´écran

    Sprite8( 10, / / Coordonnée x
       10, / / coordonnée y
       8, / / Hauteur de l´image ( la notre : 8 car 8x8)
       image, / / Notre image
       LCD_MEM, / / L´écran
       SPRT_OR ) ; / / Le mode

    ngetchx(); / / Attends la pression d´une touche
}

Et voila, cela affiche notre sprite en forme de croix à l´écran.

Bon l´ensemble des concepts énoncés ici sont peu abordables pour un débutant, le mieux est que tu commence à lire le livre ou un tuto afin de voir au moins le fonctionnement des tableaux/pointeurs avant de vouloir te lancer dans les techniques énoncées si dessus.
Cela peut sembler difficle au début, mais une fois que c´est compris on peut faire de chouettes choses :) , nottament en utilisant des graphismes en niveaux de gris.

Les commandes de graph.h ne sont pas difficiles à comprendre, mais celle de Sprite.h réclament plus de connaissance : laisse les tomber si cela t´es obscur pour le moent.

Je te conseille également de parcourir les exemple de codes que tu trouveras dans le répertoire de TIGCC : ils abordent de nombreux concepts de la programmation ti89.

A mon avis, la programmation en C sur ti constitue l´une des meilleures formations qui soit pour s´initier au C et à sa puissance puisque cette machine te permet un accès direct à son hardware par les pointeurs et présente l´avantage de ne pas être trop complexe, tout en possédant les mécanismes de fonctionnement similaires à un ordinateur.

Te décourages pas si tu galères au début, c´est normal :)
Je reste là pour répondre à tes questions.

JeanYvesYves
JeanYvesYves
Niveau 10
24 août 2004 à 17:05:45

neofungamer > C++ Builder, ça sert surtout a faire de la WinApi, moi je sais que je n´aime pas trop pour faire des petits jeux....

lag-it > et beh, tu aimes écrire :) C bien ça :)

lag-it
lag-it
Niveau 10
24 août 2004 à 17:08:40

Voui, et encore c´est assez superficiel par rapport à ce qu´on peut faire vraiment :)

AJ-Styles
AJ-Styles
Niveau 3
24 août 2004 à 19:02:10

SALUT

Koyo-K
Koyo-K
Niveau 9
24 août 2004 à 19:32:58

Est-ce qu´il est possible de telecharger le BlueBook pour OpenGL ( comme il est possible de le faire pour le Red) histoire d´avoir une doc sous les yeux quand je veux ?
J´ai vu que pour une simple initialisation il faut plus de 200 lignes de code. La taille d´un simple programme doit etre GROOOOSSE comparé à un prog fait avec la SDL ! Alors peut-être que le nombre de lignes ne veut rien dire et sert simplement a faire fuir mais rassurez-moi, il ne faut pas 500 lignes pour afficher une image ? ?

lag-it
lag-it
Niveau 10
24 août 2004 à 19:44:36

Le " problème" avec OpenGl, c´est qu´il te laisse t´occuper de la gestion de la fenêtre, contrairement à la SDL qui te fourni les fonctions pour le faire.

Cependant, Glut et même la SDL permettent parfaitement d´initialiser OpenGL avec un nombre relativement faible de lignes : compte entre 10 et 50 environs ( cf. exemple du red book concernant le carré qui tourne )

thesuperbest
thesuperbest
Niveau 8
24 août 2004 à 21:21:19

Comment on fait en C++ pour stocker une phrase entière entrée par l´utilisateur en mémoire ?

ayoucef88
ayoucef88
Niveau 8
24 août 2004 à 21:29:00

slt a tous je voulais savoire juste ce qui est la difference entre un BUILDER C++ et un VISUAL C++
et qui est mieux dans le devlopement de moteur de jeu et de jeu sont il identique ? ??
alors j´attend la reponse et les lignes de codes sont identique aussi ? ?

Koyo-K
Koyo-K
Niveau 9
24 août 2004 à 23:29:06

Pour une " simple" fenetre c´est enorme 200 lignes.
Pourquoi Glut est-il toujours fourni avec opengl32.lib, c´est une sorte de sponsor ? Est-ce que Glut peut remplacer SDL dans ses fonctionnalités ?

JeanYvesYves
JeanYvesYves
Niveau 10
25 août 2004 à 01:49:13

Koyo-k > tout a fait, tu peux te servir de GLUT pour amorcer openGL, tout comme tu peux te servir de SDL pour la meme chose.
Si le prog que tu as vu était gros, c´est parce qu´il utilisait windows.h, et qu´il faut tout faire manuellement : avec Glut, en tres peu de lignes ( pas + que SDL) tu initialises OpenGL :)

ayoucef88 > Borland builder " equivaut" a visual C++ si tu veux faire de la winAPI : c´est a dire faire des programmes avec des boutons windows, etc ! ! mais il n´est pas recommandé si tu veux faire du plein écran ( mode des jeux). Dans ce cas je te recommande Visual C++, ou alors DevC++

thesuperbest > cin.get(); au lieu de cin tout court.

lag-it
lag-it
Niveau 10
25 août 2004 à 09:54:41

Koyo-K > Si tu te base sur le programme d´initialisation d´OpenGL pour Windows de nehe, il est normal que tu trouves celui-ci très long : tout y est sécurisé :)
Si il y a le moindre problème à l´initialisation, ca affiche un message d´erreur etc...

thesuperbest
thesuperbest
Niveau 8
25 août 2004 à 11:43:09

JYY tu m´as dit d´utlisiser cin.get() au lieu de cin, mais maintenant il ne me stocke que la première lettre. Voila mon programme(tout simple) :

  1. include < iostream>
  2. include < string>
  3. include < fstream>

using namespace std;

int main(int argc, char *argv[])
{
string phrase;
ofstream file("phrase.txt");
cout < < " Ecris une phrase : " ;
phrase = cin.get();
file < < phrase;
cout < < phrase < < " : ecrite dans phrase.txt" < < endl;
file.close();
system("PAUSE");
return 0;
}

JeanYvesYves
JeanYvesYves
Niveau 10
25 août 2004 à 11:44:35

oups me me suis gourré, lol :)
c´est :
cin.getline();

désolé pour mon erreur :) cin.get() est pour un seul caractere ! :)

thesuperbest
thesuperbest
Niveau 8
25 août 2004 à 11:46:47

ok et merci.

GL_K
GL_K
Niveau 10
25 août 2004 à 11:53:24

Koyo-K ->
à priori oui, on peut le télécharger, mais n´ayant pas beaucoup cherché, je me suis contenter de trouver ( il y a un temps) la doc complète pour " OpenGL Blue Book" :
http://www.parallab.uib.no/SGI_bookshelves/SGI_Developer/books/OpenGL_RM/sgi_html/bk02.html

Pour l´initialisation d´une fenêtre, ils te l´ont dit, OpenGL ne gère que l´affichage, donc il faut passer par une autre lib ( glut par exemple mais incomplet, win32 / DirectX, SDL...).

" La taille d´un simple programme doit etre GROOOOSSE comparé à un prog fait avec la SDL" : pas du tout, en effet on penserai que se serai le cas, mais en fait ça reviens au même. Par exemple un appel à une fonction comme . ..LoadBMP("tsgvf.tga"); ne prends qu´une ligne de code, mais derrière tout ça, il y a tout de même peut-être des centaines de ligne de code pour charger une image ( ma classe image prends 800 lignes de codes environ, pourtant ça n´empêche pas que l´exécutable prenne une place ridicule sur le disque!). Dans un jeu, ce n´est aps le code source qui prends le plus de place, se sont plutôt les . obj/.md2(3)/.[ext d´image]...

Pour faire afficher une image, tout dépends : tu peus passer par les class ( class CIMAGE), où déjà la définition de ses méthodes ( ...) prends un certain nombre de ligne de code. Après tu dois Charger cette image ( ainsi que sauvegarder Width, Height, BPP, data...), définir les paramêtre de texturage, et enfin déssiner une surface avec les coordonnées de texture.
Mon moteur fait tout cela, il ne me suffit plus que de faire l´appel de 4 fonctions ( LoadTexture(), BindTexture(), TextureProperty(), Destroy()) pour afficher une image à l´écran! Pour la SDL ça doit être sensiblement le même nombre d´appel!

Mais ne t´inquiète pas, il est serte préférable de charger toi-même tes images ( pour ta connaissance personnel et surtout pour un très large approfondissement), mais tu peus passer par la SDL, surtout qu´elle fait ça très bien!

Cependant, je préfère programmer avec le moins de code simplifié : un C++/Win32/OpenGL/DirectX reste assez proche de la machine!

thesuperbest
thesuperbest
Niveau 8
25 août 2004 à 11:54:15

il y a une erreur de compilation à la ligne où il y a cin.getline() : 12 C:\WINDOWS\BUREAU\PHRASE~1\main.cpp
no matching function for call to `std::basic_istream<char,

JeanYvesYves
JeanYvesYves
Niveau 10
25 août 2004 à 12:00:57

donne ton code

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