RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Problème dans un tetris

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
CraKk
Nouveau membre
Inscrit : 29/07/2007
Messages : 5
Message
#139457
Posté le 29/07/07 à 15:13
Bonjour, j'ai commencé hier à programmer un tetris pour un pote, mais le problème qui m'est de suite apparu est que quand la piece descend, pour le faire tourner ou la deplacer horizontalement, le joueur doit pourvoir appuyer sur une touche sans que cela ne bloque le jeu. Les fonctions que je connais sont getch, scanf ou ce genre, c'est à dire que cela bloque le programme tant qu'aucune touche n'a été pressé. Si quelqu'un sait comment pallier à ce problème je lui serais reconnaissant de bien vouloir m'aider, merci d'avance !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139462
Posté le 29/07/07 à 19:07
Tu fait un tetris en mode console???

Si oui, le seul moyen serai d'utiliser les threads, mais les threads sont asser difficile a programmer, je ne te le conseil pas...

Le mieux serai d'en faire un en Win32...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

CraKk
Nouveau membre
Inscrit : 29/07/2007
Messages : 5
Message
#139465
Posté le 29/07/07 à 20:13
Ouais je fais un tetris en mode console parceque je ne connais rien en win32. Si tu pouvais m'en dire plus ou m'indiquer un lien où je pourrais avoir des infos sur les threads ça serait super car je ne connais pas ces trucs du tout.
Si ces threads sont toute fois trop compliqués, je pense que je vais me mettre au win32 mais c'est un defis qu'on m'a lancé alors j'aimerais bien arriver à bout !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139466
Posté le 29/07/07 à 20:20
Premierement, si tu débute, je te déconseil les threads, 2emement, si tu veut faire une app. win32 pure, sans dx ou opengl, je te conseil un language de plus haut niveau, comme C# ou Delphi. 3emement, si tu veut vraiment faire un beau jeu en 2 ou 3d, utilise dx ou OpenGL, mais je te conseil OpenGL, il est plus facile a apprendre, et la syntax est meilleur a mon avis.

Si tu a d'autre question, n'ésite pas...

PS, j'ai fait un tetris en 3d il y a quelque temp, mais la source est asser grosse et compliquer pour qqun qui debute en c/c++.

Voicci le lien:
http://www.freewebs.com/vortex666/Tetrix3D.rar

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

CraKk
Nouveau membre
Inscrit : 29/07/2007
Messages : 5
Message
#139467
Posté le 29/07/07 à 20:27
En fait, ce qui m'amuse c'est de realiser un tetris dans une simple console, sans aucun graphisme et loin du 3d des nouveaux jeu.
Je programme pas mal mais jamais de jeux ou d'applications win32, pas mal pour les microcontroleurs pics, donc pour ainsi dire j'y connais rien pour les jeux... La methode des threads m'a l'air interressante, mais j'aimerai savoir si elle est compatible avec dev c++. Si l'opengl ou dx est vraiment plus interressante je veux bien m'y mettre. J'ai deja realisé un puissance 4 en debut d'année pour un projet et le tetris devrait etre du meme style alors si tu veux le voir pour comprendre ce que j'aimerais produire je peux l'envoyer. Merci pour ta rapidité vortex666 !!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139468
Posté le 29/07/07 à 20:35
Les thread font partie de l'API win32, alors oui, tu peut les utiliser avec DevCpp. Le problemme avec les threads, c'est qu'il est possible d'ecrire dans la meme variable, au meme momment, dans 2 ou plusieur thread a la fois, ce qui fait planter le programme a coup sur. Il fatu alors utiliser les fonctions de sycronisations, et ca peut prendre quelque temp pour tout comprendre. Si tu regarde mon jeu, j'utilise les thread pour faire jouer l'ordi (quand on attend 5 sec dans le menu principal). Et je doit dire que ce ne fut pas chose facile...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139469
Posté le 29/07/07 à 20:54
Voici un exemple tres simple, que tu devra modifier bien sur a ton gout...


#include "Windows.h" #include "Stdio.h" #include "conio.h" DWORD dwTheThreadID; // Thread identifier HANDLE hTheThread; // Handle du thread HANDLE hTheThreadEvent; // Handle dun evenement de syncronisation // Le Thread DWORD WINAPI TheThread(LPVOID ChPressed) { int Ch = 0; Ch = getch(); *((int*)ChPressed) = Ch; printf("%d", *((int*)ChPressed)); return 0; } // Main void main() { DWORD CharPressed = 0; hTheThread = CreateThread(NULL, 0, TheThread, &CharPressed, 0, &dwTheThreadID); Sleep(5000); }

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139470
Posté le 29/07/07 à 20:55
si tu veut un exemple plus complet, il y en a plein sur codeproject, en voici un(peut etre pas le meilleur, mais en tk)

http://www.codeproject.com/threads/Threads_1.asp

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

CraKk
Nouveau membre
Inscrit : 29/07/2007
Messages : 5
Message
#139472
Posté le 29/07/07 à 21:07
Merci beaucoup pour les threads, je vais essayer de l'utiliser pour mon petit tetris, quand j'aurai bien sûre analysé le mode d'emploi, ce que je me hate de faire !

L'openGL sert quand a lui a creer des graphismes non ? J'aimerai m'y mettre aussi car son utilisation permet de realiser des jeux assez evolués non ? Le probleme est que je n'ai absolument aucune notion là-dedans...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 482
Message
#139473
Posté le 29/07/07 à 21:19
Bien sur! J'ai fait un Tetris et un jeu d'echec avec opengl.

http://www.freewebs.com/vortex666/Echeck3D.rar
http://www.freewebs.com/vortex666/Tetrix3D.rar

Je suis presentement en train de develloper une librarie d'un moteur 3d baser sur le code de ces 2 jeux justement. Il est a peu pres fini, et il marche tres bien. Avec ca, tu peut loader un model 3d en une ligne de code, les textures aussi, le son, ect... Bien sur, une connaisance de base en OpenGL est requise pour implementer la function qui dessine la scene, mais c deja beaucoup moin compliquer que de tout faire soit meme.

Exemple:


#pragma comment(lib, "Vortez3DEngine.lib") #include "Vortez3DEngine.h" class CEngine : public CVortez3DEngine { public: void InitEngineExt(); void ShutdownEngineExt(); void RenderScene(); //void UpdateScene(); void OnKeyDown(UINT KeyPressed); public: void DrawModel(CModel *pModel); }; CModel ColumnModel; //----------------------------------------------------------------------------- // Name : WinMain() (Application Entry Point) // Desc : Entry point for program, App flow starts here, end here. //----------------------------------------------------------------------------- int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { pEngine = new CEngine; if(pEngine->InitEngine(&hInstance, 0,0,800,600,1)){ pEngine->StartEngine(); } pEngine->ShutdownEngine(); SAFE_DELETE_OBJECT(pEngine); return 0; } void CEngine::InitEngineExt() { pEngine->Camera.SetDefaultValue(10.0f,25000.0f, 0.0f,60.0f, 0.0f,0.0f,0.0f, 5000.0f, 1.0f,250.0f, 0.0f,360.0f,-90.0f,90.0f); pEngine->Camera.SetCameraRotation(0.0f, 25.0f); ColumnModel.LoadModelFromFile("Column.M3D"); ColumnModel.LoadPrimaryTextureID("Column.bmp", 0, 0); } void CEngine::ShutdownEngineExt() { ColumnModel.FreeModelData(); } void CEngine::OnKeyDown(UINT KeyPressed) { } void CEngine::DrawModel(CModel *pModel) { pEngine->EnableVAs(VA_VTN); pModel->BindPrimaryTextureID(); pModel->BindVAs(VA_VTN); pModel->DrawModel(); pEngine->DisableVAs(VA_VTN); } void CEngine::RenderScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); // Set OpenGL for 3D Drawing pEngine->Set3DMode(10, 25000); glEnable(GL_LIGHTING); glEnable(GL_TEXTURE_2D); glEnable(GL_DEPTH_TEST); // Set the color to pure white glColor3f(1.0f, 1.0f, 1.0f); // Begin 3d drawing glPushMatrix(); pEngine->Camera.SetCamera(); DrawModel(&ColumnModel); glPopMatrix(); //Draw the FPS DrawFPS(); // Swap the back buffer, drawing the current scene on the screen SwapBuffers(pEngine->GethDC()); } /*void CEngine::UpdateScene(){}*/


Ce code ne se compilera pas, car il te manque la lib, mais si ca t'interresse, je te la donnerai, et t'expliquerai comment ca marche plus en detail...

PS: Tout le code pour crée la fenetre windows et l'initialisation d'opengl sont automatique. Et les functions InitEngineExtm ShutDownEngineExt, OnKeyDown, ect sont appeler par l'engin automatiquement aussi.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGES : [1] [2]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.