begin process at 2013 05 24 01:03:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > [C++] [WIN32] JEUX DE SHOOT ( SPACE SHOOT )

[C++] [WIN32] JEUX DE SHOOT ( SPACE SHOOT )


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :Moteur2D, Win32, Fmod, Jeux Niveau :Initié Date de création :11/07/2012 Vu / téléchargé :2 478 / 162

Auteur : nikau

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voila un petit jeux vidéo. C'est très simple, il faut shooter le max d'aliens. J'ai crée ce jeux pour tester mon moteur 2D. Donc, les sources, en plus du jeux, sont un moteur de jeux 2D entièrement écrit avec l'API Win32 et en C++. J'utilise aussi la bibliothèque Fmod ( qui est gratuite tant que 'elle n'est pas utilisée pour un usage commercial).
Je met en exemple la class Sprite ci dessous.

Source

  • //------------------------------
  • // sprites.cpp
  • //------------------------------
  • #include <windows.h>
  • #include <fstream>
  • #include "sprites.h"
  • namespace G2D
  • {
  • //bool cSprite::mCollision = false;
  • cSprite::cSprite(HDC hdc, bool nodes)
  • {
  • mBitmap = new cBitmap(hdc);
  • mNextSprite = NULL;
  • mHdc = hdc;
  • mPosX = 0;
  • mPosY = 0;
  • mWidth = 0;
  • mHeight = 0;
  • mNumFrame = 0;
  • mNumColumn = 0;
  • mFrameDelay = 0;
  • mNodes = nodes;
  • mVisible = true;
  • mAlive = true;
  • mLastDisplay = true;
  • }
  • cSprite::cSprite(HDC hdc, RECT rect, eReaction reaction, bool nodes)
  • {
  • mBitmap = new cBitmap(hdc);
  • mNextSprite = NULL;
  • mHdc = hdc;
  • mLimiteRect = rect;
  • mReaction = reaction;
  • mNodes = nodes;
  • mVisible = true;
  • mAlive = true;
  • mLastDisplay = true;
  • mPosX = 0;
  • mPosY = 0;
  • mWidth = 0;
  • mHeight = 0;
  • mNumFrame = 0;
  • mNumColumn = 0;
  • mFrameDelay = 0;
  • }
  • cSprite::~cSprite()
  • {
  • delete mBitmap;
  • if(mNextSprite)
  • delete mNextSprite;
  • }
  • void cSprite::LoadSprite(std::string name, int x, int y, int frame, int column , int delay )
  • {
  • if(!mNodes)
  • {
  • mPosX = x;
  • mPosY = y;
  • mNumFrame = frame;
  • mNumColumn = column;
  • mFrameDelay = delay;
  • mCurrentFrame = 0;
  • mCountFrameDelay = 0;
  • mCurrentColumn = 0;
  • mBitmap->LoadBitmap(name.c_str());
  • mWidth = mBitmap->GetBitmapWidth();
  • mHeight = mBitmap->GetBitmapHeight();
  • static_cast<int>(mFrameWidth) = (mWidth/mNumFrame);
  • static_cast<int>(mFrameHeight) = (mHeight/mNumColumn);
  • // for pixel perfect collision
  • //------------------------------------------------------
  • mT = new bool*[mWidth];
  • for(int i=0;i<mWidth;i++)
  • mT[i] = new bool[mHeight];
  • for(int i=0;i<mWidth;i++)
  • for(int j=0;j<mHeight;j++)
  • {
  • if(GetPixel(mBitmap->GetMemHdc(), i, j) == RGB(255, 0, 255))
  • mT[i][j] = false;
  • else
  • mT[i][j] = true;
  • }
  • //-------------------------------------------------------
  • SetRect(&mCollisionRect,x, y, x+mWidth, y+mHeight);
  • mNextSprite = new cSprite(mHdc, true);
  • return;
  • }
  • if(!mNextSprite)
  • {
  • mPosX = x;
  • mPosY = y;
  • mNumFrame = frame;
  • mNumColumn = column;
  • mFrameDelay = delay;
  • mCurrentFrame = 0;
  • mBitmap->LoadBitmap(name.c_str());
  • mWidth = mBitmap->GetBitmapWidth();
  • mHeight = mBitmap->GetBitmapHeight();
  • // for pixel perfect collision
  • //------------------------------------------------------
  • mT = new bool*[mWidth];
  • for(int i=0;i<mWidth;i++)
  • mT[i] = new bool[mHeight];
  • for(int i=0;i<mWidth;i++)
  • for(int j=0;j<mHeight;j++)
  • {
  • if(GetPixel(mBitmap->GetMemHdc(), i, j) == RGB(255, 0, 255))
  • mT[i][j] = false;
  • else
  • mT[i][j] = true;
  • }
  • //-------------------------------------------------------
  • SetRect(&mCollisionRect,x, y, x+mWidth, y+mHeight);
  • mNextSprite = new cSprite(mHdc, mLimiteRect, mReaction, true);
  • return;
  • }
  • else
  • mNextSprite->LoadSprite(name, x, y, frame, column, delay);
  • }
  • //--------------------------------------------
  • // Display a sprite
  • //--------------------------------------------
  • void cSprite::DisplaySprite()
  • {
  • if(mNextSprite)
  • {
  • if(mAlive)
  • {
  • if(mVisible || (!mVisible && mLastDisplay))
  • {
  • mBitmap->DisplayBitmap(mPosX, mPosY);
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • if(!mVisible)
  • mLastDisplay = false;
  • }
  • mNextSprite->DisplaySprite();
  • }
  • }
  • }
  • //----------------------------------------------
  • // Display a transparent sprite
  • //----------------------------------------------
  • void cSprite::DisplaySprite(int R, int G, int B)
  • {
  • if(mNextSprite)
  • {
  • if(mAlive)
  • {
  • if(mVisible || (!mVisible && mLastDisplay))
  • {
  • mBitmap->DisplayBitmap(mPosX, mPosY, R, G, B);
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • if(!mVisible)
  • mLastDisplay = false;
  • }
  • mNextSprite->DisplaySprite();
  • }
  • }
  • }
  • //-----------------------------------------------------------
  • // Display a transparent sprite with a BYTE[] as argument
  • //-----------------------------------------------------------
  • void cSprite::DisplaySprite(BYTE color[])
  • {
  • if(this)
  • {
  • if(mNextSprite)
  • {
  • if(mAlive)
  • {
  • if(mVisible || (!mVisible && mLastDisplay))
  • {
  • if(mNumFrame == 1)
  • {
  • mBitmap->DisplayBitmap(mPosX, mPosY, color);
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • if(!mVisible)
  • mLastDisplay = false;
  • }
  • else
  • {
  • mBitmap->DisplayPartBitmap(mPosX, mPosY, (mFrameWidth*mCurrentFrame), (mFrameHeight*mCurrentColumn),
  • mFrameWidth, mFrameHeight, color);
  • if(mCountFrameDelay == mFrameDelay)
  • {
  • if((mCurrentFrame++) == (mNumFrame+1))
  • mCurrentFrame = 0;
  • mCountFrameDelay = 0;
  • }
  • else
  • mCountFrameDelay++;
  • }
  • }
  • }
  • }
  • mNextSprite->DisplaySprite();
  • }
  • }
  • void cSprite::MooveSprite(int x, int y)
  • {
  • if(mNextSprite)
  • {
  • if(mReaction == SR_NOREACTIONS)
  • {
  • mPosX += x;
  • mPosY += y;
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • return;
  • }
  • if(mReaction == SR_STOP)
  • {
  • if(mLimiteRect.top<(mPosX+x) && mLimiteRect.bottom>(mPosX+x+mWidth) &&
  • mLimiteRect.left<(mPosY+y) && mLimiteRect.right>(mPosY+y+mHeight))
  • {
  • mPosX += x;
  • mPosY += y;
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • return;
  • }
  • }
  • if(mReaction == SR_DELETE)
  • {
  • if(mLimiteRect.top<(mPosX+x) && mLimiteRect.bottom>(mPosX+x+mWidth) &&
  • mLimiteRect.left<(mPosY+y) && mLimiteRect.right>(mPosY+y+mHeight))
  • {
  • mPosX += x;
  • mPosY += y;
  • SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
  • }
  • else
  • mVisible = false;
  • }
  • mNextSprite->MooveSprite(x, y);
  • }
  • }
  • void cSprite::UpdateFrame()
  • {
  • }
  • INIT CreateSpriteObject(HDC hdc, bool nodes, cSprite** sprite)
  • {
  • *sprite = new cSprite(hdc, nodes);
  • if(*sprite!= NULL)
  • return G2D_OK;
  • else
  • return G2D_FAILED;
  • }
  • INIT CreateSpriteObject(HDC hdc, RECT rect_limite, eReaction reaction, bool nodes, cSprite** sprite)
  • {
  • *sprite = new cSprite(hdc, rect_limite, reaction, nodes);
  • if(*sprite!=NULL)
  • return G2D_OK;
  • else
  • return G2D_FAILED;
  • }
  • } //namespace G2D
//------------------------------
// sprites.cpp
//------------------------------

#include <windows.h>
#include <fstream>
#include "sprites.h"

namespace G2D
{

//bool cSprite::mCollision = false;

cSprite::cSprite(HDC hdc, bool nodes)
{

	mBitmap = new cBitmap(hdc);
	mNextSprite = NULL;
	mHdc = hdc;

	mPosX = 0;
	mPosY = 0;
	mWidth = 0;
	mHeight = 0;
	mNumFrame = 0;
	mNumColumn = 0;
	mFrameDelay = 0;
	mNodes = nodes;
    mVisible = true;
	mAlive = true;
	mLastDisplay = true;
}


cSprite::cSprite(HDC hdc, RECT rect, eReaction reaction, bool nodes)
{
	mBitmap = new cBitmap(hdc);
	mNextSprite = NULL;
	mHdc = hdc;
    mLimiteRect = rect;
	mReaction = reaction;
	mNodes = nodes;
    mVisible = true;
	mAlive = true;
	mLastDisplay = true;

    mPosX = 0;
	mPosY = 0;
    mWidth = 0;
	mHeight = 0;
	mNumFrame = 0;
	mNumColumn = 0;
	mFrameDelay = 0;
}


cSprite::~cSprite()
{
	
	delete mBitmap;
	if(mNextSprite)
		delete mNextSprite;	
}


void cSprite::LoadSprite(std::string name, int x, int y, int frame, int column , int delay )
{
   
	if(!mNodes)
	{ 
		mPosX = x;
		mPosY = y;
		mNumFrame = frame;
		mNumColumn = column;
		mFrameDelay = delay;
		mCurrentFrame = 0;
		mCountFrameDelay = 0;
		mCurrentColumn = 0;
		
		mBitmap->LoadBitmap(name.c_str());
		mWidth = mBitmap->GetBitmapWidth();
		mHeight = mBitmap->GetBitmapHeight();

		static_cast<int>(mFrameWidth) = (mWidth/mNumFrame);
		static_cast<int>(mFrameHeight) = (mHeight/mNumColumn);
		
		// for pixel perfect collision
		//------------------------------------------------------
        mT = new bool*[mWidth];
        for(int i=0;i<mWidth;i++)
			mT[i] = new bool[mHeight];

        for(int i=0;i<mWidth;i++)
	        for(int j=0;j<mHeight;j++)
	        {
		        if(GetPixel(mBitmap->GetMemHdc(), i, j) == RGB(255, 0, 255))
					mT[i][j] = false;
				else
					mT[i][j] = true;   
			}
		//-------------------------------------------------------

        SetRect(&mCollisionRect,x, y, x+mWidth, y+mHeight);
		mNextSprite = new cSprite(mHdc, true);
		return;
	}

	if(!mNextSprite)
	{
		mPosX = x;
	    mPosY = y;
		mNumFrame = frame;
		mNumColumn = column;
		mFrameDelay = delay;
		mCurrentFrame = 0;
		mBitmap->LoadBitmap(name.c_str());
		mWidth = mBitmap->GetBitmapWidth();
		mHeight = mBitmap->GetBitmapHeight();

        // for pixel perfect collision
		//------------------------------------------------------
        mT = new bool*[mWidth];
        for(int i=0;i<mWidth;i++)
			mT[i] = new bool[mHeight];

        for(int i=0;i<mWidth;i++)
	        for(int j=0;j<mHeight;j++)
	        {
		        if(GetPixel(mBitmap->GetMemHdc(), i, j) == RGB(255, 0, 255))
					mT[i][j] = false;
				else
					mT[i][j] = true;   
			}
		//-------------------------------------------------------

	    SetRect(&mCollisionRect,x, y, x+mWidth, y+mHeight);
		mNextSprite = new cSprite(mHdc, mLimiteRect, mReaction, true);
		return;
	}
	else
		mNextSprite->LoadSprite(name, x, y, frame, column, delay);
}


//--------------------------------------------
// Display a sprite
//--------------------------------------------
void cSprite::DisplaySprite()
{
	if(mNextSprite)
	{
		if(mAlive)
		{
		    if(mVisible || (!mVisible && mLastDisplay))
		    {
                 mBitmap->DisplayBitmap(mPosX, mPosY);
                 SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
			    if(!mVisible)
				    mLastDisplay = false;
		    }
	        mNextSprite->DisplaySprite();
		}
	}
}


//----------------------------------------------
// Display a transparent sprite
//----------------------------------------------
void cSprite::DisplaySprite(int R, int G, int B)
{
	if(mNextSprite)
	{
		if(mAlive)
		{
		    if(mVisible || (!mVisible && mLastDisplay))
		    {
             mBitmap->DisplayBitmap(mPosX, mPosY, R, G, B);
             SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
			    if(!mVisible)
				    mLastDisplay = false;
		    }
	        mNextSprite->DisplaySprite();
		}
	}
}


//-----------------------------------------------------------
// Display a transparent sprite with a BYTE[] as argument
//-----------------------------------------------------------
void cSprite::DisplaySprite(BYTE color[])
{
	if(this)
	{
	if(mNextSprite)
	{
		if(mAlive)
		{
		    if(mVisible || (!mVisible && mLastDisplay))
		    {
			    if(mNumFrame == 1)
			    {
                    mBitmap->DisplayBitmap(mPosX, mPosY, color);
                    SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
			        if(!mVisible)
				    mLastDisplay = false;
		        }
			    else
			    {
					mBitmap->DisplayPartBitmap(mPosX, mPosY, (mFrameWidth*mCurrentFrame), (mFrameHeight*mCurrentColumn),
					                       mFrameWidth, mFrameHeight, color);

				    if(mCountFrameDelay == mFrameDelay)
				    {
					     if((mCurrentFrame++) == (mNumFrame+1))
					     mCurrentFrame = 0; 

                         mCountFrameDelay = 0;
			        }
					else
						mCountFrameDelay++;
				}
			}
		}
	}
	mNextSprite->DisplaySprite();
	}
}

void cSprite::MooveSprite(int x, int y)
{
	if(mNextSprite)
	{
	  if(mReaction == SR_NOREACTIONS)
	  {
		  mPosX += x;
		  mPosY += y;
          SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
		  return;
	  }

	  if(mReaction == SR_STOP)
	  {
		  if(mLimiteRect.top<(mPosX+x) && mLimiteRect.bottom>(mPosX+x+mWidth) &&
		     mLimiteRect.left<(mPosY+y) && mLimiteRect.right>(mPosY+y+mHeight))
		  {
			  mPosX += x;
	          mPosY += y;
			  SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
			  return;
		  }
	  }

	  if(mReaction == SR_DELETE)
	  {
		  if(mLimiteRect.top<(mPosX+x) && mLimiteRect.bottom>(mPosX+x+mWidth) &&
		     mLimiteRect.left<(mPosY+y) && mLimiteRect.right>(mPosY+y+mHeight))
		  { 
			  mPosX += x;
		      mPosY += y;
			  SetRect(&mCollisionRect,mPosX, mPosY, mPosX+mWidth, mPosY+mHeight);
		  }
		  else
			  mVisible = false;
	  }
	  
	  
	  mNextSprite->MooveSprite(x, y);
	}
}

void cSprite::UpdateFrame()
{
     
    
}


INIT CreateSpriteObject(HDC hdc, bool nodes, cSprite** sprite)
{

	*sprite = new cSprite(hdc, nodes);

	if(*sprite!= NULL)
		return G2D_OK;
	else
		return G2D_FAILED;
}

INIT CreateSpriteObject(HDC hdc, RECT rect_limite, eReaction reaction, bool nodes, cSprite** sprite)
{
	*sprite = new cSprite(hdc, rect_limite, reaction, nodes);

	if(*sprite!=NULL)
		return G2D_OK;
	else
		return G2D_FAILED;
}


} //namespace G2D

 Conclusion

Dîtes moi ce que vous en pensez.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture INFOS IMAGE POUR OPENGL

 Sources de la même categorie

Source avec Zip ASCII_PHYSIX par BuuG63
Source avec Zip EAT GAME - AFFRONTEZ VOS AMIS par Nebur97232
Source avec Zip Source avec une capture FRUTISNAKE 1.0 par ringo73
Source avec Zip Source avec une capture BRIQUES GAME par xtreen
RÉSOLUTION DU JEU RUSH HOUR PARFOIS APPELÉ UNBLOCK par pabbati

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BRIQUES GAME par xtreen
Source avec Zip Source avec une capture CASSE_BRIQUE_VERSION_UNIX_WIN32 par wassimbik
Source avec Zip Source avec une capture S32 (SNAKE SOUS WIN32) par agent 047
Source avec une capture [DEV-CPP]UN TETRIS, ENCORE... par maxwells
Source avec Zip Source avec une capture JEU DE TETRIX [WIN32][VC++7][SANS MFC][FMOD] par max12

Commentaires et avis

Commentaire de nikau le 11/07/2012 08:58:32

Il faut appuyer sur "Echap" pour quitter le jeux.

Commentaire de Magma2300 le 25/07/2012 09:39:10

Excuse moi, je ne sais pas ce que je dois lançer pour commencer le jeux?

Commentaire de nikau le 26/07/2012 00:19:03

@magma2300

Il faut le compiler pour créer un exécutable (.exe) à l'aide d'un compilateur, enfin, si c'est ce que tu veux savoir, sinon, sois plus précis :)

Commentaire de Magma2300 le 28/07/2012 10:32:59

Ok, merci beaucoup. Je vais voir ce que je peux faire.
Ps: J'adore l'image de ton avatar

Commentaire de nikau le 30/07/2012 19:32:32

Merci :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Win32(control) [ par NitRic ] Bonjour, pour mon premier prog Win32 en C++ j'ai décider de faire un petit NotPad sauf que la j'ai un problème:J'ai fais des menu et dans le menu Édi Où trouver le Win32 SDK ? [ par PierreP ] ... avec un help ou qqchose de ce genre qui explique comment on utilise les fonctions.Impossible de le trouver sur Le site de Microsoft ! changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan changé curseur dans application Win32 [ par Stoomm ] Bonjour, j'aimerais chargé un curseur autre que celui par défault dans une appli Win32.Quelqu'un peut il me donner la marche à suivre svp.Merci d'avan jeux d'echecs en c++ [ par ptitlouis68 ] Je dois realiser un projet de jeu d'echecs en c++ avec microsoft visual studio c++.Je recherche un code source de ce jeux ayant comme bibliotheque gra demande librairie gtk pour win32 [ par francky ] quelqu'un pourrait-il me donner la librairie gtk.h?ou alors des liens vers des exemples d'interface graphique réaliséemerci d'avance. jeux de dame en language C++ (TURBO C) avis aux pros!!!!! [ par saitek ] salut a toi si tu es 1 pro du C++ pourrais tu faire ce programme je suis trop mauvais pour le faire alors si tu te sens capable de le faire je ne dema lien vers librairie glut pour win32 [ par francky ] m'étant fait déja passé pour un con ne sachant pas lire,pour tout ceux qui débutent et ne trouve pas la librairie glut pour windows permettant de cree gtk & win32 & Visual C++ [ par Paisible ] je vais peut être me faire jeter, mais bon...j'ai cherché dans le forum... et impossible de trouver la trace d'un quelconque post concernant la config win32 et sous-classement [ par mozert ] hi.mmm... mwai.. voila mon probleme..le sous-classement (subclassing)..est-il possible de sous-classer une fenetre appartenant à un processus differen


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,072 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales