[.:sourie:.]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 461 fois - Téléchargée 36 fois

Contenu du snippet

lorsque l'on maintient clike sur l'ecran de la console et on bouge le @ suit la souris.

Source / Exemple :

/*MoveMan.h*/
#include <windows.h>								
#include <iostream>								
using namespace std;								

#define NORTH 0								
#define SOUTH 1								
#define EAST  2								
#define WEST  3								
													
#define SCREEN_WIDTH  79						
#define SCREEN_HEIGHT 24						
									
									
									
									
									

#define ERASE 0		
#define DRAW  1

			
			
			
																										
struct PLAYER {		
	COORD	Position;			
	int		Direction;		
};

void DrawPlayer(PLAYER Player, int Draw);void MovePlayer(PLAYER &Player);
/********************/
/*main.cpp*/
#include <stdlib.h>
#include "MoveMan.h"				

HANDLE hInput, hOutput;	
void DrawPlayer(PLAYER Player, int Draw)
{
	if(Draw)										
	{								
		SetConsoleCursorPosition(hOutput, Player.Position);
		cout << "@";					
	}
	else								
	{								
		SetConsoleCursorPosition(hOutput, Player.Position);
		cout << " ";	
				
	}
}

void MovePlayer(PLAYER &Player)	
{				
	INPUT_RECORD InputRecord;
	DWORD Events=0;		
				
				
	ReadConsoleInput(hInput, &InputRecord, 1, &Events);
							
	if(InputRecord.EventType == MOUSE_EVENT)	
		if(InputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
		{											
			DrawPlayer(Player, ERASE);	
			Player.Position.X = InputRecord.Event.MouseEvent.dwMousePosition.X;
			Player.Position.Y = InputRecord.Event.MouseEvent.dwMousePosition.Y;
			DrawPlayer(Player, DRAW);				
		}
	}
	
	if(InputRecord.EventType == KEY_EVENT)
	{					
						
						
		if(InputRecord.Event.KeyEvent.wVirtualKeyCode == VK_RIGHT)
		{				
			DrawPlayer(Player, ERASE);
			Player.Position.X++;	
			DrawPlayer(Player, DRAW);
		}	
			
		else if(InputRecord.Event.KeyEvent.wVirtualKeyCode == VK_LEFT)
		{	
			DrawPlayer(Player, ERASE);	
			Player.Position.X--;		
			DrawPlayer(Player, DRAW);	
		}											
							
		else if(InputRecord.Event.KeyEvent.wVirtualKeyCode == VK_UP)
		{								
			DrawPlayer(Player, ERASE);				
			Player.Position.Y--;					
			DrawPlayer(Player, DRAW);				
		}	
			
		else if(InputRecord.Event.KeyEvent.wVirtualKeyCode == VK_DOWN)
		{								
			DrawPlayer(Player, ERASE);				
			Player.Position.Y++;				
			DrawPlayer(Player, DRAW);			
		}	
		
	}	
													
	FlushConsoleInputBuffer(hInput);			

}

int main()						
{							
	PLAYER Player;					
	
	hInput = GetStdHandle(STD_INPUT_HANDLE);	
	hOutput = GetStdHandle(STD_OUTPUT_HANDLE);	
	SetConsoleMode(hInput, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);		

	Player.Position.X = SCREEN_WIDTH  / 2;			
	Player.Position.Y = SCREEN_HEIGHT / 2;			


	SetConsoleCursorPosition(hOutput, Player.Position);
	

	
	while(1)										
	{											
		MovePlayer(Player);							
	}

												
     system("pause");
     return 0;
}							
/*******************/

Conclusion :

SKone production
skone007
un autre niveau hein...

A voir également

Ajouter un commentaire

Commentaires

skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009

Nepi espece de clown regarde les dates de ces sources et tu contateras par toit même que ca fai perpete que j'ai pas poste voilà gar et toi avec ton trk une seul source alors voilà et oh !!! espece de clown ta que ca a faire poZé D commentaire comme ca bon C pa grave si ta que ca a faire alors eclate toi ... chaqu'un ces kiff on tu l'ennuis comme on peut allez + espece de clown
nepi
Messages postés
87
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007

sourie = souris ? non ?

Je te propose pour verifier : Menu demarrer -> Panneau de configuration -> Souris
skone007
Messages postés
166
Date d'inscription
mercredi 24 avril 2002
Statut
Membre
Dernière intervention
23 juin 2009

ui C une façon de voire les choZes
Haldwin
Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004

Voila je t'écris seulement pour te faire deux trois petites remarques mais sans aucun reproche. Il s'agit tous d'abord de ta boucle infinie -> ça serait plus sympa si on avait un moyen de sortir de ton prog avec la touche "Esc" par exemple.
Puis après t'as la possibilité dans ton code de remplacer dans la fonction
MovePlayer tes (if..if else) par un switch c'est un peu plus "lisible".

Tu peux aussi faire dans la fonction "void DrawPlayer(PLAYER Player, int Draw)":

SetConsoleCursorPosition(hOutput, Player.Position);
if(draw)
cout << "@";
else
cout << " ";

Puis comme dis 24Karas il te manque une accolade...
Voila mes petites remarques, sinon ton code est bien,
Bon dev,
H@ldwin.
24Karas
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

Fais gaffe Skone007 sur ton source il y a une erreur !!
Le premier if de moveplayer tu le fermes } mais tu l'ouvres pas :p
Bon c'est pas compliqué à réparer tu as juste à virer l'accolade de fermeture.
Bonne continuation
24.KaraS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.