MOTEUR POUR JEU DE CUBES.

Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 - 1 mars 2007 à 02:45
Bad Compagny Messages postés 1 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 14 mai 2007 - 14 mai 2007 à 03:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41687-moteur-pour-jeu-de-cubes

Bad Compagny Messages postés 1 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 14 mai 2007
14 mai 2007 à 03:33
bravo pour le code source!
p314 Messages postés 1 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 15:58
10/10 pour la source,

je me demandais, pour le tableau avec les faces, s'il ne vallais pas mieux utiliser des quaternions, genre representer le cube en 3D dans la memoire et l'afficher en pseudo-3D, ce qui permetrais de se passer du cube en papier.
Ca donnerais un tableau pour les 6 faces, avec un vecteur pour la direction de chaque face, et un vecteur pour l'orientation celles-ci.
Et il suffirais de faire une rotation de chaque vecteur pour tourner le cube, et de trouver le bon vecteur a afficher (par ex. (0,0,1,0)) dans la liste des directions, son homologue servant pour definir l'orientation de la face avec par ex. ses 2 premieres coordonées (x,y,#,#).

C'est lourd mais ca peux servir a faire évoluer le moteur, pour afficher 3 faces du cube ou autre..
Finalement je vais le coder pour voir... :)
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
5 mars 2007 à 18:07
Bah 3D ou 2D c'est la grande question.

la 3D permet d'obtenir des effets qui demanderais des centaines de lignes de codes en 2D.

l'avantage de la 3D (DirectX ou OpenGL (de preference)) c'est les performances a l'affichage et toute les fonctions de bases deja disponible, performantes, optimisées etc.

ce sont deux monde a part et puis le resultat est tellement bien reussi qu'on ne peu rien dire sur cela.
pas d'erreur de texture, effet 3D reussi, on pourrait juste demander un affichage aleatoire des texture sur les faces des cubes :

procedure TForm1.Shp_CreerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index,StartIndex : Integer;
UnJpeg : TJPEGImage;
NomFichier, ImgPath : String;
begin
UnCube := TCube.Create(self);
with UnCube do
begin
Virtuel := Rbt_Virtuel.Checked;
Parent := Self;
Taille := StrToInt(Edt_Taille.Text);
Vitesse := 50 - Tkb_Vitesse.Position;
Top := 30;
Left := 270;

UnJpeg := TJPEGImage.Create;
try
StartIndex := Random(100);
AppPath := ExtractFilePath(ParamStr(0)) + 'cubeengine_images\';
for Index := 0 to 5 do
begin
NomFichier := ImgPath+ 'Ima' + IntToStr((StartIndex + Index) mod 6) + '.jpg';
if FileExists(NomFichier)then
begin
UnJpeg.LoadFromFile(NomFichier);
ChargerJpg(Index, UnJpeg);
end;
end;
finally
UnJpeg.Free;
end;
end;
end;
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
4 mars 2007 à 15:56
@ Debiars : Génial, le Debiar's Cube!
Et tu vas commencer par un prototype en papier? lol

@ florenth : Merci pour tes remarques.
Bein oui, c'est pour ça que je poste. Pas pour ma libido... lol

-Alors, je mets de l'ordre dans mes idées. Si j'ai bien compris, le Owner (la fiche) fera appel, lors de sa destruction, au destructor de chaque cube et ainsi tous les Bitmap seront libérés en cascade. Donc, pas la peine de faire explicitement appel au destructor quand il y a un Owner. C'est bien ça, Florent?
Mais n'est-ce pas un bon reflex que de libérer tout ce qu'on crée, même si c'est superflu? Je croyais que c'était un principe en POO. Quelle est la bonne attitude à adopter, finalement?

-Les procédures imbriquées apportent des avantages au niveau de la portée des variables et permettent le copier-coller d'une seule procédure lors de la conception. Mais c'est vrai que ça ne facilite pas la lecture, et c'est important quand on poste. Je ne le ferai donc plus.

-La POO, c'est passionnant, c'est vrai! Et je recommande à tous les débutants de s'y mettre le plus tôt possible. Programmer, n'est-ce pas organiser sa pensée pour tenter de mettre le monde réel en phrases binaires? D'où cette intense satisfaction de se sentir approcher la condition divine. Et la POO facilite grandement cela. Il y a un moment où tout s'éclaire comme une révélation, et je souhaite à tous les programmeurs débutants de connaître cette sensation.

-Minute cubiturique: Pour moi, la vraie programmation 3D n'existe que dans l'info embarquée des machines-outils modernes. Ici, c'est de la pseudo 3D. Et je crois que c'est bien plus compliqué que la vraie 3D.

re-@ Debiars : N'abandonne surtout pas le cinéma pour les cubes, Jean-Pierre!!!
( Les autres comprendront bientôt : Debiars a qq chose sur le feu pour vous ;)
Je viens de tomber sur ce code et je n'ai qu'une chose à dire: bravo !

Y'a de l'idée, une très bonne réalisation, et même un peu d'ASM !
J'ai cependant quelques remarques (après tout, c'est ce que tu voulais):
- Tu n'es pas obligé de libérer explicitement les TCube que tu crée puisque que spécifie le Owner dans le constructeur. C'est donc la fiche qui libère automatiquement les composants.
- Tu a pas mal de procédures imbriquées dans une seule, ce serait plus simple à comprendre si elles étaient toutes indépendantes.

En tout cas, bienvenue dans le fabuleux monde de la POO ! Plein de bugs et nuit blanches en perspectives !! ^^ lol

Juste un truc:
"Pour faire simple, je dirai que ce sont des cubes 2D qu'on dirait des cubes 3D."
Mais non ! C'est de la vraie 3D que tu viens de coder là !
La troisième dimension, c'est en fait l'art de la représenter en 2D !"(bon, je vous laisse méditer là... encore de la cubiture...)

++
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
4 mars 2007 à 10:43
Effectivement, me voilà en pleine soucitude...
Je suis déjà en train de me fouiller pour trouver à quelle sauce accomoder ce moteur là.
Je vois bien un gros cube avec des carrés de toutes les couleurs (6 par exemple) et qu'on ferait tourner par tranche pour essayer de rassembler toutes les couleurs identiques sur la même face...génial, non?

@Carib : le coup du petit cube en papier, j'ai déjà utilisé également!
Utilisateur anonyme
2 mars 2007 à 22:16
Qui comprend la cubiture acquière la Delphitude

... et je n'ai même pas eu à aller sur la grande muraille pour ça! lol

@Japee: je constate que les allocutions d'une pseudo tête couronnée t'ont marquées
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
2 mars 2007 à 16:37
Woui, Japee.
La cubiture? Ce serait pas encore un truc relevant de la bistromatique, ça?
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
2 mars 2007 à 14:06
Bah, Caribensila : la cubiture* de la sphère... on n'a pas fini d'épiloguer là-dessus !

* ça fait un peu gros mot...
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
2 mars 2007 à 03:58
Y'a pas de mal, Cirec.
Les cubes, on croit tous bien les connaître, mais quand on code pour eux, on se rend vite compte que c'est des pourris.
...
Enfin, c'est ma conviction, now. ;)
Utilisateur anonyme
2 mars 2007 à 02:43
ah oui je comprend mieux maintenant ...

j'avais pas remarqué que les images étaient toujours dans le bon sens en mode Réel. Désolé ... ;)

Effectivement pas besoin, dans ce cas, d'éffectuer une rotation.

Remarque je l'avais noté "(je ne sais pas si c'est normal ou non)"
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
1 mars 2007 à 23:39
Merci les gars.

@ Cirec
Pourquoi voudrais-tu faire pivoter une image qui est dans le bon sens?
C'est la seule raison d'être des cubes virtuels : toujours présenter des images dans le bon sens.

Tu pensais à quelque chose qui pourrait être utile?..
Utilisateur anonyme
1 mars 2007 à 23:25
Salut,

ça a l'air bien tout ça ... avec une approche originale

juste un truc (je ne sais pas si c'est normal ou non) en mode réel si je clique en bas à droite le cube éffectue une rotation sur lui même d'un quart de tour vers la droite mais en virtuel il ne se passe rien ?

en tous cas c'est réussit ... bravo

@+
Cirec
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
1 mars 2007 à 20:44
J'ai juste testé rapidos le truc..
ben, c'est très bon et ya du boulot !
@+
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
1 mars 2007 à 03:22
:)
T'es gentil, Francky. Heureux que ça te plaise.
Merci.
Mais Monsieur Debiars est, j'espère, entre d'autres, notre maître à tous.
Et, avec moi, il n'a pas trop de soucis à se faire...
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
1 mars 2007 à 02:45
Alors objectivement : c'est génial. L'effet et le rendu sont bleuffant. Et le tout est fluide.

Coté code : ben rien à redire c'est du grand art, Monsieur Débiars à du souci à se faire.

Je trouve que la facon dont tu as pris le problème tres élégante.

10/10
Rejoignez-nous