All pastes #18226 Raw Edit

Unnamed

public cpp v1 · immutable
#18226 ·published 2005-07-21 14:43 UTC
rendered paste body
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////serveur#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <SDL/SDL.h>#include "CTile.h"#include <sstream>#include <iostream>using namespace std;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void envoyer(char *msg);void recevoir();////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////struct sockaddr_in InfoSocketServeur, InfoSocketClient;socklen_t SocketServeur, SocketClient;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////SDL_Surface *image, *image2;SDL_Rect rect, RectPostion, rect2, RectPostion2;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////int PositionX=320, PositionY=320, PositionXX=320, PositionYY=320;int PositionX2=320, PositionY2=320, PositionXX2=320, PositionYY2=320;//joueur2int CameraX=320, CameraY=320;int TempReel=0;int nextUpdateTime = 0;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void AfficherTest(SDL_Surface *Cible, int x, int y);//affiche le joueurvoid AfficherAutre(SDL_Surface *Cible, int x, int y);//affiche l'autre////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bool trucX(){	if ((PositionX<320-1) && (PositionX < 1024-320-1)){	return false;	}	else if ((PositionX>320-1) && (PositionX > 1024-320-1)){	return false;	}	else{	return true;	}}bool trucY(){	if ((PositionY< 240-1) && (PositionY < 1024-240-1)){	return false;	}	if ((PositionY> 240-1) && (PositionY > 1024-240-1)){	return false;	}	else{	return true;	}}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////int main(int argc, char** argv){	SocketServeur = socket(AF_INET, SOCK_STREAM, 0);	if (SocketServeur < 0)	{	cout<<"le socket n'a pu etre crée"<<endl;	return 0;	}	InfoSocketServeur.sin_family = AF_INET;	InfoSocketServeur.sin_port = htons(3400); 	InfoSocketServeur.sin_addr.s_addr = INADDR_ANY; 	memset(&(InfoSocketServeur.sin_zero), 0, 8);	//associs le port ect.. a la socket	if((bind(SocketServeur, (struct sockaddr *)&InfoSocketServeur, sizeof(struct sockaddr))) < 0)  	{	cout<<"la socket a merdee"<<endl;	return 0;	}	if(listen(SocketServeur, 3400) < 0)	{	cout<<"ecoute imposible"<<endl;	return 0;	}	cout<<"en attente de connection"<<endl;	socklen_t SizeInfo = sizeof(struct sockaddr_in);	SocketClient = accept(SocketServeur, (struct sockaddr *)&InfoSocketClient, &SizeInfo);			if (SocketClient <= 0)	{	cout<<"Impossible d'accepter la socket distante"<<endl;	}	else	{	cout<<"c'est partis !!!"<<endl;	Uint8 *keyarray = SDL_GetKeyState(NULL);		image = SDL_LoadBMP("sprite.bmp");	image2 = SDL_LoadBMP("sprite2.bmp");	bool etat =true;	SDL_Surface *pscreen ;	SDL_Event Evenement;		if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0){exit(1);}	atexit(SDL_Quit);		pscreen = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);	if(pscreen == NULL){ exit(1);}	SDL_WM_SetCaption ("SERVEUR", NULL);	CTitle *test_titles;	test_titles = new CTitle();	test_titles->ChargerTiles();	test_titles->map.largeur = 1024/16;	test_titles->map.hauteur = 1024/16;	test_titles->map.PointX  = 640 /16;	test_titles->map.PointY  = 480 /16;	while(etat)	{		TempReel=SDL_GetTicks();		if(SDL_PollEvent(&Evenement))		{			switch (Evenement.type)			{			case(SDL_QUIT):etat = false; break;							case SDL_KEYDOWN:			switch(Evenement.key.keysym.sym)			{			case SDLK_KP_ENTER:  cout<<"camera: "<<CameraY<<"  position: "<<PositionY<<endl;  break;			}			break;		}										}			/*if (TempReel>nextUpdateTime)			{nextUpdateTime = SDL_GetTicks() + 10;*/	if (keyarray[SDLK_LEFT])	{ if(trucX()){ CameraX -= 2; } PositionX -= 2; }	if (keyarray[SDLK_RIGHT])	{ if(trucX()){ CameraX += 2; } PositionX += 2; }	if (keyarray[SDLK_UP])		{ if(trucY()){ CameraY -= 2; } PositionY -= 2; }	if (keyarray[SDLK_DOWN]) 	{ if(trucY()){ CameraY += 2; } PositionY += 2; }	if (CameraX < 320-1) 		{ CameraX = 320; }	else if (CameraX > 1024-320-1)	{ CameraX = 1024-320; }	if (CameraY < 240-1)		{ CameraY = 240; }	else if (CameraY > 1024-240-1)	{ CameraY = 1024-240; }	if ((PositionX < 1024-320-1) && (PositionX > 320))	{ PositionXX = 320; }	else if (PositionX < 320)				{ PositionXX = PositionX; }	else if (PositionX > 1024-320-1)			{ PositionXX = 320 + (320-(1024-PositionX)); }	if ((PositionY > 240-1) && (PositionY < 1024-240-1))	{ PositionYY = 240; }	else if (PositionY < 240)				{ PositionYY = PositionY; }	else if (PositionY > 1024-240-1)			{ PositionYY = 240 + (240-(1024-PositionY)); }//}	if (TempReel>nextUpdateTime)	{	nextUpdateTime = SDL_GetTicks() + 150;	ostringstream oss (ostringstream::out);	oss <<  PositionX;	envoyer((char*)oss.str().c_str());	ostringstream ossy (ostringstream::out);	ossy <<  PositionY;	envoyer((char*)ossy.str().c_str());	recevoir();	}	//////////////////////////////////////////////////////////////////	test_titles->AfficherTiles(pscreen, CameraX, CameraY);	AfficherTest(pscreen, PositionXX, PositionYY);	AfficherAutre(pscreen, PositionX2 - (CameraX-320), PositionY2 - (CameraY-240));	SDL_Flip(pscreen);	SDL_FillRect(pscreen,NULL,0);	}	test_titles->LibererTiles();}	shutdown(SocketClient, 2);	return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void AfficherTest(SDL_Surface *Cible, int x, int y){	rect.h=16;	rect.w=16;	RectPostion.x=x;	RectPostion.y=y;	SDL_BlitSurface(image, &rect, Cible, &RectPostion);}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void envoyer(char *msg){	unsigned long nb;	nb = strlen(msg) + 1;	send( SocketClient, &nb, sizeof( unsigned long ), 0 );	send( SocketClient, msg, nb, 0 );}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void recevoir(){	char buffer[256]; unsigned long nb;	recv( SocketClient, &nb, sizeof( unsigned long ), 0 );	recv( SocketClient, buffer, nb, 0 );	char buffer2[256]; unsigned long nb2;	recv( SocketClient, &nb2, sizeof( unsigned long ), 0 );	recv( SocketClient, buffer2, nb2, 0 );	int trucX =atoi(buffer);	PositionX2=trucX;	int trucY =atoi(buffer2);	PositionY2=trucY;	//cout<<"Message recu: "<<PositionX2<<"    "<<PositionY2<<endl;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void AfficherAutre(SDL_Surface *Cible, int x, int y){	rect2.h=16;	rect2.w=16;	RectPostion2.x=x;	RectPostion2.y=y;	SDL_BlitSurface(image2, &rect2, Cible, &RectPostion2);}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////