Beispiel #1
0
int main(int argc, char **argv)
{
    if (argc == 1) {
        LApp Life(150, 150, "23/3");
        return Life.Execute();
    } else if (argc == 4) {
        int x = atoi(argv[1]);
        int y = atoi(argv[2]);
        LApp Life(x, y, argv[3]);
        return Life.Execute();
    } else {
        LApp Life(150, 150, argv[1]);
        return Life.Execute();
    }
}
Beispiel #2
0
int   main(int argc,char *argv[])
{
   FILE  *f;
   if(argc>=2)
   {
      f=fopen(argv[1],"r");
      if(f==NULL)
      {
         perror(argv[1]);
         return(1);
      }
      Load(f);
      fclose(f);
   }
   else
   {
      f=fopen("field.lif","r");
      if(f!=NULL)
      {
         Load(f);
         fclose(f);
      }
   }

   OpenInterface();
   OwInitialize(root_pal);
   ShowMouse(TRUE);
   SetEventMask(KEYBOARD_EVENTS|MOUSE_EVENTS);
   OwCreate(&StatusWin,0,DOWN,1,1,status_pal);
   OwCreate(&ReadLine,MIDDLE,MIDDLE+5,60,4,readline_pal);
   Life();
   OwExit();
   CloseInterface();
   return(0);
}
// ------------------------------------------------------------------------------------------------
Uint32 ProjectileBase :: WriteToPacket(Uint32 dataWritePos, Uint8 data[])
{
	Uint32 sendId = Id();
	ProjectileType sendType = Type();
    Vector2df sendPos = Pos();
    Uint32 sendHeadingDeg = HeadingDeg();
    float sendSpeed = Speed();
    Uint32 sendOwnerPlayerId = OwnerPlayerId();
    float sendLife = Life();
    Uint32 sendHealth = Health();
    bool sendIsMoving = IsMoving();

    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_ID], &sendId, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_TYPE], &sendType, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_POSX], &sendPos.x, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_POSY], &sendPos.y, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_HEADING], &sendHeadingDeg, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_SPEED], &sendSpeed, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_LIFE], &sendLife, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_HEALTH], &sendHealth, 4);
    memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_PLAYER_ID], &sendOwnerPlayerId, 4);
	memcpy(&data[dataWritePos + PACKET_WRITE_PROJECTILE_ISMOVING], &sendIsMoving, 1);

    return PACKET_WRITE_PROJECTILE_LENGTH;
} // ----------------------------------------------------------------------------------------------
Beispiel #4
0
int main()
{
	//Sets window
	sfw::initContext(scrnWidth, scrnHeight, "Pong");

	while (sfw::stepContext())
	{
		Collision();
		Life();

		//player one
		sfw::drawLine(5, plrOneP, 5, plrOneP + plrHeight);
		if (sfw::getKey('q')) plrOneP -= plrSpeed * sfw::getDeltaTime();
		if (sfw::getKey('a')) plrOneP += plrSpeed * sfw::getDeltaTime();

		if (plrOneP < 0) plrOneP = 0;
		if (plrOneP > scrnHeight - plrHeight) plrOneP = scrnHeight - plrHeight;
		//player two
		sfw::drawLine(795, plrTwoP, 795, plrTwoP + plrHeight);
		if (sfw::getKey('p')) plrTwoP -= plrSpeed * sfw::getDeltaTime();
		if (sfw::getKey(';')) plrTwoP += plrSpeed * sfw::getDeltaTime();

		if (plrTwoP < 0) plrTwoP = 0;
		if (plrTwoP > scrnHeight - plrHeight) plrTwoP = scrnHeight - plrHeight;
		//ball
		xpos += xvel * sfw::getDeltaTime();
		ypos += yvel * sfw::getDeltaTime();

		sfw::drawCircle(xpos, ypos, radius);

		delay--;
		if (delay == 0)
		{
			xvel = speed;
			yvel = speed + 50;
		}
	}
	sfw::termContext();
}
Beispiel #5
0
//-----------------------------------------------------------------------------
// CGameApp Member Functions
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Name : CGameApp () (Constructor)
// Desc : CGameApp Class Constructor
//-----------------------------------------------------------------------------
CGameApp::CGameApp()
{
	// Reset / Clear all required values
	m_hWnd			= NULL;
	m_hIcon			= NULL;
	m_hMenu			= NULL;
	m_pBBuffer		= NULL;
	m_LastFrameRate = 0;
	m_fTimer		= 0;
	countGameOver	= 0;
	FollowPlayer	= true;
	GameOver		= false;
	BricksExist		= false;
	UnstoppableBall	= false;
	LevelChange		= false;
	MouseOrKeyboard = false;
	StickyBar		= false;
	ShrinkBar		= false;
	MoveBall		= false;
	StartLoad		= false;
	SlowMouse		= false;
	Score();
	Life();
}
Beispiel #6
0
int main(int argc, char **argv) {
    int rank, size, m, n, local_m, local_n, last_add;
    int play;
	char file[20];
    int Recv_size, Send_size;//размеры принимаемых и отправляемых сообщений
    int Gens;//количество поколений
    int dst, src, tag;
	int *Local_World, *Global_World, *Tmp_Buf;
	int i,j,k,l;
	MPI_Status status;
	
	// подключение mpi
    MPI_Init(&argc, &argv);

	// Узнаем ранк процессора и количество процессоров
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);    

	
	Get_Data(&m,&n,&Gens,rank);//считываем входные данные (размеры игрового поля m - количество строк, n - столбцы)
	
	if(rank==0)
	{
		
		Global_World=Mem_Alloc(m+2,n+2);//выделение памяти под всю таблицу
		
		Init_World(Global_World,"input.txt", m, n);//заполнение таблицы
		
		//Draw_World("test1.txt",Global_World,m+2,n+2);
		
		Distrib(Global_World,m,n,size);//рассылка каждому процессору своей рабочей области (кроме нулевого естественно)
		
		local_n=n/size+2;
		local_m=m+2;
		
		Local_World=Mem_Alloc(local_m,local_n);
		
		for(i=0;i<local_m;i++)
			for(j=0;j<local_n;j++)
				Local_World[i*local_n+j]=Global_World[i*(n+2)+j];
		//Draw_World("test2.txt",Local_World,local_m,local_n);
		for(k=0;k<Gens;k++)
		{
			play=1;
			for(l=1;l<size;l++)
				MPI_Send(&play,1,MPI_INT,l,l,MPI_COMM_WORLD);
			
			Life(Local_World,local_m,local_n);
			
			//Draw_World("test3.txt",Local_World,local_m,local_n);
			
			Tmp_Buf=Mem_Alloc(local_m,1);//выделение памяти под массив для обменов	
			Send_size=local_m;			
			Recv_size=local_m;
			
			/* прием последнего столбца с последнего процессора на 0 */
			Receive(&src,&tag,size-1,0);
			MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);
			
			for(i=0;i<local_m;i++)
				Local_World[i*local_n]=Tmp_Buf[i];
			/* -------------------------------------------------------- */
			
			/* отправка последнего столбца из 0 процессора на 1 */
			for(i=0;i<local_m;i++)
				Tmp_Buf[i]=Local_World[i*local_n+local_n-2];
				
			Send(&dst,&tag,1,0);
			MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
			/* -------------------------------------------------------- */	
			
			/* прием первого столбца с 1 процессора на 0 */
			
			Receive(&src,&tag,1,0);
			MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);
			
			for(i=0;i<local_m;i++)
				Local_World[i*local_n+local_n-1]=Tmp_Buf[i];				
			/* -------------------------------------------------------- */
			
			/* отправка 1 столбца в 0 процессоре на последний процессор */
			for(i=0;i<local_m;i++)
				Tmp_Buf[i]=Local_World[i*local_n+1];
			Tmp_Buf[0]=Local_World[0]; //возьня с уголками
			Tmp_Buf[local_m-1]=Local_World[(local_m-1)*local_n];
			
			Send(&dst,&tag,size-1,0);
			MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
			/* -------------------------------------------------------- */		
			free(Tmp_Buf);
		}
		play=0;
		for(l=1;l<size;l++)//рассылка этого флага остальным процессорам
		{
			Send(&dst,&tag,l,l);
			MPI_Send(&play,1,MPI_INT,dst,tag,MPI_COMM_WORLD);
		}

		for(i=0;i<local_m;i++)
			for(j=0;j<local_n;j++)
				Global_World[i*(n+2)+j]=Local_World[i*local_n+j];
		free(Local_World);
		
		//Draw_World("test_f.txt",Global_World,m+2,n+2);
		
		for(k=1;k<size;k++)//прием с каждого процессора соответствуещей части от всего игрового поля
		{
			if(k==size-1)
				last_add=n%size;
			else
				last_add=0;
			
			local_n+=last_add;

			Local_World=Mem_Alloc(local_m,local_n);			

			Recv_size=local_m*local_n;
				
			Receive(&src,&tag,k,k+1);
			MPI_Recv(Local_World,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);

			for(i=0;i<local_m;i++)
				for(j=0;j<local_n;j++)
					Global_World[i*(n+2)+(j+(local_n-2)*k)]=Local_World[i*local_n+j];

			free(Local_World);
		}
		Draw_World("test_final.txt",Global_World,m+2,n+2);
		free(Global_World);		
	}
	else
	{
		local_m=m+2;
		if(rank!=size-1)
			local_n=n/size+2;
		else
			local_n=n/size+2+n%size;

		Recv_size=local_m*local_n;

		Local_World=Mem_Alloc(local_m,local_n);
		
		Receive(&src,&tag,0,rank);
		MPI_Recv(Local_World,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);//прием соответствующей части от всего игрового поля
		
		//Draw_World("testiyuiasdfhjas.txt",Local_World,local_m,local_n);

		Tmp_Buf=Mem_Alloc(local_m,1);

		Recv_size=local_m;
		Send_size=local_m;
		
		Receive(&src,&tag,0,rank);
		MPI_Recv(&play,1,MPI_INT,src,tag,MPI_COMM_WORLD,&status);//прием флага play
		
		while(play)
		{
			Life(Local_World,local_m,local_n);
			//myprint("test4.txt",play);

			if(rank>0 && rank<size-1)
			{
				/* прием последнего столбца с предыдущего процессора на текущий */
				Receive(&src,&tag,rank-1,0);
				MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);
				for(i=0;i<local_m;i++)
					Local_World[i*local_n]=Tmp_Buf[i];
				/* -------------------------------------------------------- */
				
				/* отправка последнего столбца из текущего процессора на следующий */
				for(i=0;i<local_m;i++)
					Tmp_Buf[i]=Local_World[i*local_n+local_n-2];
				
				Send(&dst,&tag,rank+1,0);
				MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
				/* -------------------------------------------------------- */
				
				/* прием первого столбца со следующего процессора на текущий */

				Receive(&src,&tag,rank+1,0);
				MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);

				for(i=0;i<local_m;i++)
					Local_World[i*local_n+local_n-1]=Tmp_Buf[i];
				/* -------------------------------------------------------- */
				
				/* отправка первого столбца из текущего процессора на предыдущий */
				for(i=0;i<local_m;i++)
					Tmp_Buf[i]=Local_World[i*local_n+1];
					
				Send(&dst,&tag,rank-1,0);
				MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
				/* -------------------------------------------------------- */
			}
			if(rank==size-1)
			{
				/* отправка последнего столбца из последнего процессора на 0 */
				for(i=0;i<local_m;i++)
					Tmp_Buf[i]=Local_World[i*local_n+local_n-2];
				Tmp_Buf[0]=Local_World[local_n-1];
				Tmp_Buf[local_m-1]=Local_World[(local_m-1)*local_n+(local_n-1)];

				Send(&dst,&tag,0,0);
				MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
				/* -------------------------------------------------------- */

				/* прием последнего столбца с предпоследнего процессора на последний (текущий) */

				Receive(&src,&tag,rank-1,0);
				MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);
				for(i=0;i<local_m;i++)
					Local_World[i*local_n]=Tmp_Buf[i];
				/* -------------------------------------------------------- */

				/* отправка первого столбца из последнего процессора на предпоследний */
				for(i=0;i<local_m;i++)
					Tmp_Buf[i]=Local_World[i*local_n+1];
					
				Send(&dst,&tag,rank-1,0);
				MPI_Send(Tmp_Buf,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);
				/* -------------------------------------------------------- */				
				
				/* прием первого столбца с 0 процессора на последний */
				
				Receive(&src,&tag,0,0);
				MPI_Recv(Tmp_Buf,Recv_size,MPI_INT,src,tag,MPI_COMM_WORLD,&status);
				for(i=0;i<local_m;i++)
					Local_World[i*local_n+local_n-1]=Tmp_Buf[i];
				/* -------------------------------------------------------- */				
				
			}
			Receive(&src,&tag,0,rank);
			MPI_Recv(&play,1,MPI_INT,src,tag,MPI_COMM_WORLD,&status);//прием флага play
		}
		//Draw_World("test_piska.txt",Local_World,local_m,local_n);

		Send_size=local_n*local_m;
		Send(&dst,&tag,0,rank+1);
		MPI_Send(Local_World,Send_size,MPI_INT,dst,tag,MPI_COMM_WORLD);//отправка соответствующей части на 0 процессор

		free(Tmp_Buf);
	}  
    MPI_Finalize();

    return 0;
}
Beispiel #7
0
int main(int argc, char *argv[])
{
	
	SDL_Event event;
	bool done = false;
	float lastFrameTicks = 0.0f;
	float ball_angle = 0.0f;
	srand(time(NULL));

	Matrix projectionMatrix;
	Matrix viewMatrix;
	Setup(&displayWindow, &projectionMatrix);

	std::vector<Entity*> entities;
	std::vector<DrawSpriteText> text;
	std::vector<Entity*> enemy_bullets;
	std::vector<DrawSpriteText> title_text;

	GLuint space_sheet = LoadTexture("sheet.png", GL_RGBA);
	GLuint fontsheet = LoadTexture("font1.png", GL_RGBA);
	GLuint bg = LoadTexture("darkPurple.png", GL_RGB);

	Entity* newEnt;
	for (size_t x = 0; x < 11; ++x){
		for (size_t y = 0; y < 4; ++y){
			
			switch (y){
			case 0:
				newEnt = new Entity(space_sheet, 1024.0f, 423.0f, 728.0f, 93.0f, 84.0f, 0.5f);

				break;
			case 1:
				newEnt = new Entity(space_sheet, 1024.0f, 425.0f, 468.0f, 93.0f, 84.0f, 0.5f);
				break;
			default:
				newEnt = new Entity(space_sheet, 1024.0f, 425.0f, 384.0f, 93.0f, 84.0f, 0.5f);
				break;
			}
			
			newEnt->x = (-6.22 + newEnt->width/2 * 11) + (x * (newEnt->width + 0.15));
			newEnt->y = ((3.5 - newEnt->height * 2) - newEnt->height/2 ) - (y * (newEnt->height + 0.2));
			entities.push_back(newEnt);
		}
	}

	for (size_t i = 0; i < entities.size(); ++i){
		points.push_back(std::make_pair(entities[i]->x, entities[i]->y));
	}
	
	Entity player(space_sheet, 1024.0f, 211.0f, 941.0f, 99.0f, 75.0f, 0.5);
	player.y = -3.5 + 0.1 + player.height/2;

	Entity player_bullet(space_sheet, 1024.0f, 843.0f, 789.0f, 13.0f, 57.0f, 0.5);
	player_bullet.x = 7.0;
	
	for (size_t i = 0; i < ENEMY_BULLETS; ++i){
		newEnt = new Entity(space_sheet, 1024.0f, 843.0f, 789.0f, 13.0f, 57.0f, 0.5);
		newEnt->x = 7.0;
		enemy_bullets.push_back(newEnt);
	}

	Entity explosion(space_sheet, 1024.0f, 737.0f, 613.0f, 37.0f, 37.0f, 0.5);
	explosion.x = 7.0;

	DrawSpriteText Life(fontsheet, "LIFE", 0.5, 0);
	Life.y = 3.0f;
	Life.x = 1.0f;
	text.push_back(Life);

	for (size_t i = 0; i < MAX_LIVES; ++i){
		newEnt = new Entity(space_sheet, 1024.0f, 211.0f, 941.0f, 99.0f, 75.0f, 0.5);
		newEnt->y = 3.0f;
		newEnt->x = 1.2f + newEnt->width*3 + ((newEnt->width + 0.1)*i);
		entities.push_back(newEnt);
	}

	DrawSpriteText Title(fontsheet, "Press Enter to Start", 0.5, 0);
	Title.x = -4.7;
	title_text.push_back(Title);

	ShaderProgram program(RESOURCE_FOLDER"vertex_textured.glsl", RESOURCE_FOLDER"fragment_textured.glsl");

	glUseProgram(program.programID);
	
	while (!done) {
		
		float ticks = (float)SDL_GetTicks() / 1000.0f;
		float elapsed = ticks - lastFrameTicks;
		lastFrameTicks = ticks;
		

		float fixedElapsed = elapsed;
		program.setProjectionMatrix(projectionMatrix);
		program.setViewMatrix(viewMatrix);

		switch (state){
		case(STATE_TITLE) :
			TitleProcessEvents(&event,&done);
			TitleRender(&program,title_text);
			break;
		case(STATE_GAME):
			GameProcessEvents(&event, &done, elapsed, entities, player_bullet, player);
			if (fixedElapsed > FIXED_TIMESTEP * MAX_TIMESTEPS){
				fixedElapsed = FIXED_TIMESTEP * MAX_TIMESTEPS;
			}
			while (fixedElapsed >= FIXED_TIMESTEP){
				fixedElapsed -= FIXED_TIMESTEP;
				GameUpdate(FIXED_TIMESTEP, entities, enemy_bullets, player_bullet, explosion, player);
			}
			GameUpdate(fixedElapsed, entities, enemy_bullets, player_bullet, explosion, player);
			GameRender(&program, entities, enemy_bullets, text, player_bullet, explosion, player);
			break;
		}
		
	}
	for (size_t i = 0; i < entities.size(); ++i){
		delete entities[i];
	}

	SDL_Quit();
	return 0;
}
Beispiel #8
0
void ShootPlant::ShowDetailsAndEffects(std::ostream& os) const {
    os << Name() << " $" << Cost() << " HP: " << Life()
       << " - gives " << damage_ << " damage points";
}
Beispiel #9
0
void ShootPlant::Print(std::ostream& os) const {
    os << Name() << " HP: " << Life();
}