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++

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 21:36:27

bah si ca l´est je sais toujours pas quelles libs tu utilises mais avec directdraw tu as les fonctions Blt et BltFast qui copient une zone ( rectangle) vers une autre ( rectangle)

lag-it
lag-it
Niveau 10
15 avril 2003 à 21:38:58

J´utilise pas de librairie genre OpenGL et DirectX pour la simple raison que c´est censé être un jeu pour ti89 ( la honte : )
J´ ai donc que stdio, stdlib quelques autres et c´est tout !
( Bon je fait ca pour me détendre entre le C++ )

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 21:39:09

mais sinon globalement les " secrets" de la 2D c´est de ne modifier et calculer que ce qui change et de conserver tout ce qui ne change pas : ) donc c peut être pas non plus très utile de transférer tout un écran s´il n´y a qu´une petite partie qui a changé...

lag-it
lag-it
Niveau 10
15 avril 2003 à 21:41:50

Ouai, mais si tu fait un scrolling, tu déplace l´écran tout le temps, donc faut tout recalculer à chaque fois.
Au début de la partie, ca va, mais après quelques heures de jeu, ca risque d´ètre long pour déplacer l´écran de quelques pixels sur le côté.

Nakeri
Nakeri
Niveau 5
15 avril 2003 à 21:42:27

merci je comprend mieux maintenant

lag-it
lag-it
Niveau 10
15 avril 2003 à 21:45:09

Je sais c´est pas simple.

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 21:46:31

bah en fait non faut pas forcément tout déplacer...

je connais pas la ti89 mais as tu des possibilités concernant l´adressage vidéo ? peux tu changer toi même l´adresse de départ de l´affichage ?

lag-it
lag-it
Niveau 10
15 avril 2003 à 21:52:36

Je ne pense pas que tu puisse changer l´adresse de départ de l´affichage, mais tu peux faire une copie sur la variable de l´écran. Mon problème, c´est que la variable écran est un tableau de 1 dimension, autrement dit, pour copier ce qui m´interesse, il faut que je copie une partie ( 1 ligne), puis que je saute jusque à la prochaine ligne.

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 21:55:48

Bin toute les mémoires sont linéaires : ) même sur PC les fonctions s´arrangent en général pour rendre le truc transparent donc quand tu appelles une fonction genre DrawPixel(x,y,rgb) elle fait elle même la conversion Ecran[x + y*width]=rgb

Doit bien y avoir quelques trucs sur le net concernant la ti89 non ? des trucs de scrolling etc... Je connais pas non plus ses capacités mais il doit bien y avoir des trucs cablés en hardware.

Nakeri
Nakeri
Niveau 5
15 avril 2003 à 21:59:11

en tout cas c une question interessante pour une fois : )

lag-it
lag-it
Niveau 10
15 avril 2003 à 21:59:37

Ouai, faudra que j´aille y faire un tour.
L´un d´entre vous à déja essayé le C# ?
Imprssion ?
Cemélange de basic et de c++ a l´air bizarre.

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 22:01:40

non pas encore, les trucs qui viennent de Microsoft j´ai pris pour habitude d´attendre la version 47 avant de m´y intéresser.. trop de bugs dans les versions précédentes : ) Alors tout un langage, j´ose même pas y toucher !

lag-it
lag-it
Niveau 10
15 avril 2003 à 22:05:16

C´est bien vrai : D, mais sa me navre car de nouveaux programmeurs risquent de tomber dans le piège et prendre l´habitude du C# ce qui risque d´augmenter la puissance de microsoft comme l´a fait DirectX pour le secteur des jeux video.
On peut toujours revenir au C++ après, mais le feront ils.
Nakeri tu fais du C aussi ?

GamerFou2
GamerFou2
Niveau 7
15 avril 2003 à 22:11:10

A mon avis ca risque pas d´arriver étant donné que la plupart des formations se font sur unix et donc en C ou C++ ( du vrai). Et pour ceux qui apprennent par eux mêmes bin, faut faire gaffe en effet.
Mais pour les jeux vidéo DirectX n´est pas un langage juste une librairie pour Windows. Le langage par excellence était, est et restera le C/C++ ( sur les consoles tu n´as rien d´autre, à part l´assembleur bien sur). Les librairies sont celles du constructeur ou les tiennes généralement et donc tu es à l´abri de Crosoft : ) à part peut être pour la Xbox lol

lag-it
lag-it
Niveau 10
15 avril 2003 à 22:15:37

Oui c´est une librairie ( je l´avais pas précisé ) , mais il n´empêche que si y a plus aucun jeu sur mac, c´est bien pour ca.
Seules certaines personnes qui utilisent OpenGL ( John Carmack ) portent leurs programmes ( quand ils le veulent). C´est une des forces des moteurs créés par ID Software : ils sont portables.
Mais Microsoft tente d´élargir sa zone d´influence et il faut tout de même se méfier. Pour l´instant on rigole, mais restons sur nos gardes.

lag-it
lag-it
Niveau 10
15 avril 2003 à 22:32:46

Il est 22h30, le forum dort.
Bonsoir et a demain.

Nakeri
Nakeri
Niveau 5
15 avril 2003 à 22:40:35

oui, moi je fait du C/C++.par contre le C#, je sais pas pourcoi mais je le sent pas, g pas l´impression que ça attire beaucoup de monde...

Kelios
Kelios
Niveau 8
16 avril 2003 à 00:04:00

C# : beurrrrk, les pointeurs n´existent presque plus... snif, finit cette arme à double tranchant! D´un coup, tu pouvait manipuler directement la mémoire, de l´autre, foutre en l´air ton programme =)

Enfin, ´reste toujours les références...

" Je reprends.
Comme tu le sait, ce qui est affiché à l´écran est stocké dans un tableau ( ex : ecran[3840] )
J´ai créé un tableau qui est environs 4 fois plus grand que la variable de l´écran et qui renferme le monde à afficher ( sous fome de 0 ( pixel éteint) et de 1 ( allumé).
Comme il est plus grand que l´ écran ( le monde ) , je ne peut pas tout afficher à la fois, il faut donc que je copie une partie du monde sur la variable de l´écran pour l´afficher.
Exemple :

11111111111111111111111111111111111111111111
1__________________________________________1
1___________________1111111111111111111____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1111111111111111111____1
1__________________________________________1
11111111111111111111111111111111111111111111
Le grand carré représente le monde et le petit représente l´écran.

Comment faire pour copier la zone spécifique du monde à afficher dans la variable écran sans passer par une boucle fort qui risque d´être un peu lente ?
Je sais c´est pas clair mais c´est dur à expliquer."

Ca me semble pas si complexe que ça:
-Déjà, si ton monde est en 1 dimension, et est automatiquement CarriageReturn-é, ça me semble plutot facile:
-Considérons que la width de l´écran est la variable ´n´, cad le nombre de charactères que ta calculatrice peut afficher dans une ligne, et ´m´, le nombre sur une colonne:
-´l´ est la longueur du monde, en caractères, cad:

________________________ l _________________
______ n __________

11111111111111111111111111111111111111111111
1__________________________________________1
1111111111111111111________________________1 |
1_________________1________________________1 |
1_________________1________________________1 |
1_________________1________________________1 m
1_________________1________________________1 |
1111111111111111111________________________1 |
1__________________________________________1
11111111111111111111111111111111111111111111

Ensuite, disons que tes coordonnées sont 30, 67 selon ton monde, on a juste à faire:

char World[50000];//Ton monde, en 1 et en 0

//On commence à compter à 0
void Draw(int x,int y)
{

int CasePointer = y*l + x;//Initialise à la première case
int reste = l - ( x+n);

for(int i=0; i<m;i++)
{

for(int j=0; j<n; j++)
{
print( World[ CasePointer+j ] )
}
//On passe une ligne
CasePointer+=l;//On passe une ligne à notre pointeur

}

} //Fin de la fonction

"
sans passer par une boucle fort qui risque d´être un peu lente ?
"
Ça m´étonnerait, mais bon... tout dépend toujours de l´algorithme, et comme toujours, si la vitesse est TA priorité, vas-y en Inline assembly* .
Je ne voit pas de problème. Ou alors je suis aveugle.

À propos du petit débat sur DirectX: ce n´est pas parce que c´est du Microsoft que c´est nécessairement mauvais. DirectX a du bon, au fond. D´ailleurs, si ce ne serait pas Microsoft, je sauterait dessus. Mais Microsoft étant ce qu´il est, je suis donc sous OpenGL ; P

"
oui, moi je fait du C/C++.par contre le C#, je sais pas pourcoi mais je le sent pas, g pas l´impression que ça attire beaucoup de monde...
"
Héhé, y,a quand même deux trucs vachement importants codé en C# en ce moment:
- Les programmes de gestion de XBoite Vivant!
- Freecell =) et je pense le Démineur hehe

Kelios
---------

  • Oui je sais, je le rammène toujours lui, mais c´est le grand amour entre l´inline assembly et moi en ce moment =).
JeanYvesYves
JeanYvesYves
Niveau 10
16 avril 2003 à 09:59:21

déja en général, C rare que ce soit le monde qui bouge : )

définis ton grand tableau, et ne cherche pas a lui changer ses valeurs : quand tu affiches ton monde, tu dois faire un truc comme

void AfficheMonde()
{
for(b=0;b<YECRAN;b++)
for(a=0;a<BECRAN;a++)
affichebrique(a,b,tab[a][b]); /* une fonction que tu auras faite : qui affiche aux coords a,b la valeur du tableau tab[a][b] */
}

tu vois ce que je veux dire ?

essaie de mettre a la place :

affichebrique(a,b,tab[a+XOFFSET][b+YOFFSET]);

ou tu définis XOFFSET et YOFFSET comme la partie supérieur gauche de ta zone a afficher : ( le X que je t´ai mis sur ton dessin ci dessous)

11111111111111111111111111111111111111111111
1__________________________________________1
1___________________X111111111111111111____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1_________________1____1
1___________________1111111111111111111____1
1__________________________________________1
11111111111111111111111111111111111111111111

Ainsi, avant l´affichage, tu changes la valeur de XOFFSET et YOFFSET, et tu lances AfficheMonde, et ça marche : tu n´as pas a décaler ton tableau...

JeanYvesYves
JeanYvesYves
Niveau 10
16 avril 2003 à 10:12:59

Kelios :

si le C# attire du monde, comme il n´y a pas beaucoup de notion de pointeurs, ceci explique cela : nombre de personnes sont rebutées par les pointeurs ( les pauvres, il ne savent pas ce qu´ils perdent ! car y´a pas plus fort qu´un pointeur)

DirectX est tout simplement excellent et plus complet que OpenGL :
OpenGL contient le graphisme, tout aussi bien que DirectX,
mais DirectX contient :
DirectDraw : routines 2D
Direct3D : rourines 3D ( le tout remplacé par DirectGraphic dans DX8)
DirectInput : gestion des entrées : calvier, souris, stick, retour de force, tout !
DirectPlay : gestion réseau
DirectSound : gestion des sons

etc, je suis sur d´en oublier : mais bref, tous les outils pour faire des jeux du tonnerre de dieu.

Selon moi, boycotter Microsoft a ce point, c´est dommage : car sous prétexte que ça s´appelle Microsoft DirectX, tu te prives d´un outil puissant.
Pour ma part, je ne prends pas la haine contre microsoft comme certains, et je ne me prive pas de toutes les compatibilités en me forçant a totu faire sous Linux : car il faut bien admettre qu´il y a bcp + de choix sous Windows et Linux.

Autant GCC et G++ sont sympas, autant j´aime aussi Borland C++ sous Windows car tu fais ton Makefile a la souris.
Autant je n´ai rien contre Linux qui est bien stable, autant j´y vais que pour programmer ce que l´on doit faire en cours d´info, sinon je reste sous win pour ma prog personnelle avec DX.

Autant y´a des trucs sympas sous Linux, autant j´admets que rien ne vaut Internet Explorer pour naviguer par exemple.

Pareil je me régale sous Office, et je n´ai pas envie de m´emcombrer avec un clone sous Linux, parce que je trouve office suffisant pour ce que j´en fais, et que je n´ai pas envie de taper du pseudo HTML sous Latex.
Ne me sortez pas l´argument du prix d´office : on a tous des graveurs, ou un pote qui en a un, n´est ce pas ?

bref voila, je trouve dommage de se priver comme ça pour " militer", surtout que Windows ne va pas mourir comme ça : les gens non informaticiens préfrent tous Windows : ils ne veulent pas taper " cd plouf" pour aller dans le répertoire plouf, ils veulent cliquer dessus. Oui, il y a ça sous Linux aussi, mais l´interet de LInux est de piloter en mode console, et ça, ça n´exite que tres peu de gens...
Donc Windows n´est pas mort, et n´est pas pret de mourir : le boycott ne sert qu´a vous priver...

Conclusion : boycotter Mircrosoft, c´est se priver de beaucoup de choses, C bien dommage ! !

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