Chiracworld (vc++ 5.0)

Soyez le premier à donner votre avis sur cette source.

Vue 10 026 fois - Téléchargée 643 fois

Description

voila un petit jeu bien sympathique et qui va pas faire plaisir a chirac :)
ce jeu n'est pas fait pour critiquer la politique, c juste pasque je savais pas quoi programmer !

le but de se jeu est extremement simple : il faut choper les billets et eviter les cassettes mery !
avec les fleches gauche et droite on se deplace et avec la fleche du haut on fait lever les mains de chirac.
pour choper des billets ou des cassettes mery, il faut lever les mains.

le plus dur dans ce jeu ça à été de trouver, modifier et faires les images !

le code source est horrible, y'as aucun commentaire, et en plus je fait un gros mix prog objet / prog structuré , bref vous allez adorer...
de plus les quelques commentaire sont en fait des parties de source que j'ai desactivé ou alors des bout de source qui correspondent à plus rien pasque la source a trop changer !
j'essayerai lors des prochaines mise a jour de faire un petit effort !

voici un petit bout du code source (chirac.cpp), le reste est dans le zip !
j'ai du virer l'image de fond pasque sinon le zip fesait plus de 200 ko et ne passait pas !
donc pour pouvoir jouer il faut creer un fichier bitmap non compressé nommé : fond.bmp
désolé !

Source / Exemple :


#include <windows.h>
#include <time.h>
#include <stdio.h>

#include "Graphique.h"
#include "Entree.h"
#include "Gest_Media.h"
#include "pepere.h"
#include "billet.h"
#include "cassette.h"

struct position{
	double x,y;
};
#define UPDATE_FRAME_RATE	32

Entree		*LPEntree;
//LPDIRECTSOUND	LPDirectSound;

//STR_joueur	Joueur;

// Pour le thread principal :
HICON	hIcon;
HCURSOR	hCursor;
HWND	HFenetre_principale;
DWORD	LastGetTick, NewGetTick;
DWORD	Images_par_seconde;
double	DBLTemp;
bool Alerte,btn[3],En_Jeu;
int Vitesse_du_jeu, tempus = 0,tbl_dbg[1000],tbl_dbg_i,x,y,OldCase;
char kbd[256];
position souris;
int Score;
pepere Chirac;
billet Billet,*B;
cassette Cassette,*C;

bonus **Obj;

/////////// FUNCTIONS ///////////

LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);

int Update_Frame();
int Update_Frame_Jeu();
int Update_Frame_Start();

/////////// FUNCTIONS => WinMain ///////////

int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil){
	HWND		hwnd;
	MSG			msg;
	WNDCLASSEX	wincl;
	int i;

	srand( (unsigned)time( NULL ) );
	wincl.hInstance = hThisInstance;
	wincl.lpszClassName = "Chirac";
	wincl.lpfnWndProc = WindowProcedure;
	wincl.style = CS_HREDRAW|CS_VREDRAW|CS_BYTEALIGNWINDOW;
	wincl.cbSize = sizeof(WNDCLASSEX);
	hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wincl.hIcon = hIcon;
	wincl.hIconSm = hIcon;
	hCursor = LoadCursor(NULL, NULL);
	wincl.hCursor = hCursor;
	wincl.lpszMenuName = NULL;
	wincl.cbClsExtra = 0;
	wincl.cbWndExtra = 0;
	wincl.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH);
	if(!RegisterClassEx(&wincl)) return 0;
	hwnd = CreateWindowEx(0,"Chirac","Chirac World",WS_POPUP,0,0,GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN)/2,NULL,NULL,hThisInstance,NULL);

	HFenetre_principale = hwnd;
	ShowWindow(hwnd, nFunsterStil);
	UpdateWindow(hwnd);

	//if(DirectSoundCreate(NULL, &LPDirectSound, NULL)!=DS_OK)  exit(1);
    //if(LPDirectSound->SetCooperativeLevel(hwnd, DSSCL_PRIORITY)!=DS_OK) exit(1);
	
	//if((i=Init_Media(hwnd))!=1) exit(i);
	if(Init_Media(hwnd)!=1) exit(0);

	Chirac.SetGraphClass(LPGraph);
	Chirac.SetSpriteGDHB(Media.pDDSChirac[0],Media.pDDSChirac[2],Media.pDDSChirac[3],Media.pDDSChirac[1],0,0,0,0,0);
	Chirac.SetXY(280,380);
	Chirac.Set_ZS(2,97,48,98);

	Cassette.SetGraphClass(LPGraph);
	Cassette.SetSpriteGDHB(
		Media.pDDSCassette[0],
		Media.pDDSCassette[0],
		Media.pDDSCassette[1],
		Media.pDDSCassette[2],
		Media.pDDSCassette[3],0,0,0,0);
	Cassette.ZS_Egal_Taille_Img();
	Cassette.SetXY(100,-50);
	
	Billet.SetGraphClass(LPGraph);
	Billet.SetSpriteGDHB(
		Media.pDDSBillet[0],
		Media.pDDSBillet[0],
		Media.pDDSBillet[1],
		Media.pDDSBillet[2],
		Media.pDDSBillet[3],0,0,0,0);
	Billet.ZS_Egal_Taille_Img();
	Billet.SetXY(100,-50);
	Obj = (bonus**) malloc(sizeof(bonus*)*10);

	for(i = 0;i < 10;i++){
		B = new billet(Billet);
		B->SetXY(rand()%590,-50*(i+1));
		Obj[i] = B;
	}
	
	

	LPEntree = new Entree;
	LPEntree->initialise(hwnd, hThisInstance);

	NewGetTick = GetTickCount();
	
	while(true)
		if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ){
			if( !GetMessage( &msg, NULL, 0, 0 ) ) return msg.wParam;
			TranslateMessage(&msg); 
			DispatchMessage(&msg);
		}else{
			NewGetTick = GetTickCount();
			if((NewGetTick-LastGetTick)>UPDATE_FRAME_RATE){
				LastGetTick = NewGetTick;
				Update_Frame();
			}
		}
}

/////////// FUNCTIONS => WindowProcedure ///////////
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){
	int i;
	switch(message){
		case WM_SETCURSOR:
			SetCursor(hCursor);
			return TRUE;
		break;
		case WM_DESTROY:
			
			for(i = 0;i < 10;i++){
				delete Obj[i];
			}
			free(Obj);
			
			Free_Media();
			//LPDirectSound->Release();
			delete LPEntree;
			DestroyIcon(hIcon); 
			DestroyCursor(hCursor);
			PostQuitMessage(1);
		break;
		default:
			return DefWindowProc(hwnd, message, wParam, lParam);
	}
	return 0;
}

/////////// FUNCTIONS => Update_Frame ///////////

int Update_Frame(void){
	tempus++;
	
	LPEntree->GetEtatTouch((char *)&kbd);
	LPEntree->Getposrel(&x,&y,(bool *)&btn);
	
	Update_Frame_Jeu();
	LPGraph->flip();
	return 1;
}

void NouveauBonus(int i){
	delete Obj[i];
	switch(rand()%100){
		case 0:case 1:case 2:case 3:case 4:case 5:
		case 6:case 7:case 8:case 9:case 10:
			C = new cassette(Cassette);
			Obj[i] = C;
		break;
		default:
			B = new billet(Billet);
			Obj[i] = B;
	}
	Obj[i]->SetXY(rand()%590,-50*(i+1));
}

int Update_Frame_Jeu(){
	char texte[512];
	int i;
		
	LPGraph->Dessine(Media.pDDSFond,0,0);

	if(kbd[DIK_LEFT])	Chirac.DeplacementRelatif(-5,0);
	if(kbd[DIK_RIGHT])	Chirac.DeplacementRelatif(5,0);
	if(kbd[DIK_UP])		Chirac.DeplacementRelatif(0,-5);
	Chirac.Bouge(1);
	Chirac.Dessine();
	
	for(i = 0;i < 10;i++){
		if(!Obj[i]->Bouge(1)) NouveauBonus(i);
		Obj[i]->Dessine();
		if(Chirac.Touch(*Obj[i])){
			Score += Obj[i]->Score();
			NouveauBonus(i);
		}
	}
	sprintf(texte,"Score : %d",Score);
	LPGraph->ecrire(10,10,texte,RGB(255,0,0),1);
	if(kbd[DIK_ESCAPE]||kbd[DIK_F12]){
		PostMessage(HFenetre_principale, WM_CLOSE, 0, 0);
	}
	return true;
}

Conclusion :


désoler pour ceux qui sont de droite ... et les profs qui aiment les programmes bien structuré et commenté :) je prone l'anarchie dans les codes sources !!!
j'essayerai de faire un mise a jour avec un code un peu plus "correct" :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
95
Date d'inscription
mercredi 5 décembre 2001
Statut
Membre
Dernière intervention
27 juin 2006

c'est un vieux prog, je me rappel pu trés bien comment j'avais coder ça, mais je suppose que si chirac.h existé j'aurai mis un #include "chirac.h" dans chirac.cpp.
generalement je creer pas de .h pour mon fichier principal, a tord ou a raison, j'en sais rien c une habitude ;)
et ce qui me fait dire que c peut etre du a une mauvaise installation de la sdk.
LPDIRECTDRAWSURFACE devrait etre defini dans ddraw.h que j'inclu dans graphique.h :
#include <ddraw.h>

typedef unsigned int HIMG;
typedef LPDIRECTDRAWSURFACE7 Sprite;
si vous me donnez plus de precision sur les erreurs qu'ils fait je pourrai peut etre vous aider.
a l'epoque j'avais pas de probleme, je compiler ça avec vc++5.0 avec la SDK7.0 de directX.
Messages postés
330
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
26 janvier 2009

Nan pasqu'y a pas qu'une erreur quoi. y'en a 4.
Messages postés
330
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
26 janvier 2009

Le problème, c'est que tu as oublié de mettre "chirac.h" dans ta source... c'est embêtant...
Messages postés
330
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
26 janvier 2009

Si c'était ça, y'aurait surement pas qu'une erreur, non?
Messages postés
95
Date d'inscription
mercredi 5 décembre 2001
Statut
Membre
Dernière intervention
27 juin 2006

verifie si la sdk de direct X d'une version superieur ou egal a 7.0 est bien installer. dans ton repertoire include de VC++ verifie dans ddraw.h si LPDIRECTDRAWSURFACE7 est bien defini
Afficher les 13 commentaires

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.