Author: ProSergeant. Date 2014-07-30 19:20:52, views: 936, Raw

Увеличить
#include "SDL.h"
#include "SDL_image.h"
#include "SDL_mixer.h"
#include "SDL_ttf.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <time.h>
#include <conio.h>
#include <list>
#include <iomanip>
#include <fstream>
#include <vector>
#include <Windows.h>
 
int SCREEN_X = 1024;
int SCREEN_Y = 768;
//const int W = 100;
//const int H = 100;
const int maxInv = 20;
 
char tmpch[200];
 
int W = 100, H = 100;
int step = 64;
int grid_x = 64;
int grid_y = 64;
int Px = 0, Py = 0, Ex = 0, Ey = 0;
int Ecount = 0;
int shans;
int invCount = 1;
int PlCount = 200;
int nExp = 0;
int tempLVL = 2;
int boom[10];
 
std::string items[] = { "", "Ракета", "Аптечка" };
int item[maxInv];
 
SDL_Rect p_rect;
Uint8 *keystate;
 
typedef struct cam 
{
	int x,y;
} cam;
cam Camera;
 
enum { up, rt, down, lt } dir;
enum { GAME, PLANET, INV, BATTLE, GAMEOVER } states;
 
bool upp = false, rp = false, dp = false, lp = false, ep = false, Eturn = false,Eatack = false, esc = false;
bool fullscreen = false;
bool canPShoot = false, canEShoot = false, canPShootR = false;
 
#include "image.h"
#include "music.h"
#include "engine.h"
 
int main( int argc, char* argv[] )
{
	srand(time(NULL));
 
	for(int i = 1; i<argc; i++)
    {
        char* a = &argv[i][2];
        if(argv[i][0]=='-') switch(argv[i][1])
        {
            case 'c': PlCount = atoi(a); break;
            case 'w': W  = atoi(a); break;
            case 'h': H  = atoi(a); break;
            default:  printf("unknown commandline option"); getch(); return 0; break;
        }
        else { printf("unknown commandline option"); getch(); return 0; }
    };
 
	SDL_Init(SDL_INIT_EVERYTHING);
	TTF_Init();
 
	SDL_WM_SetCaption("Space Pirates", "Space Pirates");
 
	//screen = SDL_SetVideoMode(640, 480, 0, 0);
	screen = SDL_SetVideoMode(SCREEN_X, SCREEN_Y,32, SDL_HWSURFACE | SDL_DOUBLEBUF);
 
	if( Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ) == -1 ) return false;
 
	Camera.x = 0; Camera.y = 0;
 
	game g;
	g.load_imgs();
 
	Player p(player_up, 7, 5);
	Menu m(menu);
	Menu inv(inv);
	Menu battle(battle);
 
	states = GAME;
 
	std::list<Ship*>  ships;
	std::list<Ship*>::iterator it;
 
	std::list<Planet*> planets;
	std::list<Planet*>::iterator PLit;
 
	char q[25] = "data/planets/";
	char buff[25];
	for(int i = 1; i <= PlCount; ++i)
	{
		q[13] = 0;
		itoa(i,buff,10);
		strcat(q,buff);
		strcat(q,".txt");
		planets.push_back(new Planet(planet_1,q));
	}
 
	bool np = false;
 
	int PBx = battle.m_rect.x+104;
	int PBy = battle.m_rect.y+150;
	int EBx = battle.m_rect.x+450-64;
	int EBy = battle.m_rect.y+150;
 
	SDL_Event event;
	bool gameover = false;
 
	/* message pump */
	while (gameover == false)
	{
		if(p.hp <= 0) states = GAMEOVER;
		if(Eturn == true)
		{
			shans = rand()%100;
			int r  = -100 + rand()%200;
			int rr = -100 + rand()%200;
			if(shans > 0 && shans < 15) ships.push_back(new Ship(ship_up, r, rr));
		}
		Eturn = false;
 
		if(p.rockets <= 0)
		{
			p.rockets = 0;
			item[1] = 0;
		}
		else if(p.rockets > 0) item[1] = 1;
 
		if(p.h <= 0)
		{
			p.h = 0;
			item[2] = 0;
		}
		else if(p.h > 0) item[2] = 2;
 
		if(states == GAME) { p.ch_m = 0; p.ch_m_x = 0; }
 
		nExp = 10*p.LvL*1.5;
		if(p.exp >= nExp) { p.LvL++; p.m_hp += 70; p.hp = p.m_hp; }
		p.dmg = p.laser*p.LvL;
		tempLVL = p.LvL;
 
		if(canPShoot) PBx += 50;
		if(canPShootR) PBx += 10;
		if(canEShoot) EBx -= 50;
 
		/* look for an event */
		if (SDL_PollEvent(&event)) {
			/* an event was found */
			switch (event.type) {
				/* close button clicked */
				case SDL_QUIT:
					gameover = true;
					break;
 
				/* handle the keyboard 
				case SDL_KEYDOWN:
					switch (event.key.keysym.sym) {
						case SDLK_ESCAPE:
							if(states == PLANET || states == INV) states = GAME;
							else gameover = 1;
							break;
					}
					break;*/
			}
		}
 
		keystate = SDL_GetKeyState(NULL);
 
		if (keystate[SDLK_LEFT] ) {
			if(states == GAME) p.update(lt);
 
			if(states == BATTLE)
				{
					p.ch_m_x--;
					if(p.ch_m_x <= 0) p.ch_m_x = 0;
				}
		}
		if(!keystate[SDLK_LEFT]) lp = false;
 
 
		if (keystate[SDLK_RIGHT] ) {
			if(states == GAME) p.update(rt);
 
			if(states == BATTLE)
				{
					p.ch_m_x++;
					if(p.ch_m_x > 1) p.ch_m_x = 1;
				}
		}
		if(!keystate[SDLK_RIGHT]) rp = false;
 
 
		if (keystate[SDLK_UP] ) {
			if(states == GAME) p.update(up);
			if(upp == false)
			{
				upp = true;
				if(states == PLANET)
				{
					p.ch_m--;
					if(p.ch_m <= 0) p.ch_m = 0;
				}
				if(states == INV)
				{
					p.ch_m--;
					if(p.ch_m <= 0) p.ch_m = 0;
				}
				if(states == BATTLE)
				{
					p.ch_m--;
					if(p.ch_m <= 0) p.ch_m = 0;
				}
			}
		}
		if(!keystate[SDLK_UP]) upp = false;
 
 
		if (keystate[SDLK_DOWN] ) {
			if(states == GAME) p.update(down);
			if(dp == false)
			{
				dp = true;
				if(states == PLANET) 
				{
					p.ch_m++;
					if(p.ch_m >= 4) p.ch_m = 4;
				}
				if(states == INV)
				{
					p.ch_m++;
					if(p.ch_m >= invCount) p.ch_m = invCount;
				}
				if(states == BATTLE)
				{
					p.ch_m++;
					if(p.ch_m > 1) p.ch_m = 1;
				}
			}
		}
		if(!keystate[SDLK_DOWN]) dp = false;
 
		if(keystate[SDLK_F1])
		{
			fullscreen = !fullscreen;
			if(fullscreen == true) screen = SDL_SetVideoMode(SCREEN_X, SCREEN_Y,32, SDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUF);
			else if(fullscreen == false) screen = SDL_SetVideoMode(SCREEN_X, SCREEN_Y,32, SDL_HWSURFACE | SDL_DOUBLEBUF);
		}
 
		if(keystate[SDLK_RETURN])
		{
			if(ep == false)
			{
				ep = true;
				for(PLit=planets.begin();PLit!=planets.end();PLit++)
				{
					Planet *a = *PLit;
					if(Px == a->getX() && Py == a->getY())
					{
						if(states == PLANET)
						{
							if(p.ch_m == 0)
							{
								if(p.money >= a->price1 && a->count1 > 0)
								{
									if(a->tovar1 == "Ракета")
									{
										p.rockets++;
										a->count1--;
										p.money -= a->price1;
										item[1] = 1;
									}	
									else if(a->tovar1 == "Аптечка")
									{
										a->count1--;
										p.money -= a->price1;
										p.h++;
										item[2] = 2;
									}
								}
							}
							if(p.ch_m == 1)
							{
								if(p.money >= a->price2 && a->count2 > 0)
								{
									if(a->tovar2 == "Ракета")
									{
										p.rockets++;
										a->count2--;
										p.money -= a->price2;
										item[1] = 1;
									}
									else if(a->tovar2 == "Аптечка")
									{
										a->count2--;
										p.money -= a->price2;
										p.h++;
										item[2] = 2;
									}
								}
							}
							if(p.ch_m == 2)
							{
								if(p.money >= a->price3 && a->count3 > 0)
								{
									if(a->tovar3 == "Ракета")
									{
										p.rockets++;
										a->count3--;
										p.money -= a->price3;
										item[1] = 1;
 
									}
									else if(a->tovar3 == "Аптечка")
									{
										a->count3--;
										p.money -= a->price3;
										p.h++;
										item[2] = 2;
									}
								}
							}
							if(p.ch_m == 3)
							{
								if(p.money >= a->price4 && a->count4 > 0)
								{
									if(a->tovar4 == "Ракета")
									{
										p.rockets++;
										a->count4--;
										p.money -= a->price4;
										item[1] = 1;
									}
									else if(a->tovar4 == "Аптечка")
									{
										a->count4--;
										p.money -= a->price4;
										p.h++;
										item[2] = 2;
									}
								}
							}
							if(p.ch_m == 4)
							{
								if(p.money >= a->price5 && a->count5 > 0)
								{
									if(a->tovar5 == "Ракета")
									{
										p.rockets++;
										a->count5--;
										p.money -= a->price5;
										item[1] = 1;
									}
									else if(a->tovar5 == "Аптечка")
									{
										a->count5--;
										p.money -= a->price5;
										p.h++;
										item[2] = 2;
									}
								}
							}
						}
						if(states == GAME) states = PLANET;
					}
				}
				if(states == BATTLE)
				{
					for(it = ships.begin();it!=ships.end();it++)
					{
						Ship *b = *it;
						if(Eatack == false)
						{
							if(p.ch_m == 0 && p.ch_m_x == 0) // Лазер
							{								
								if(b->getX() == Px && b->getY() == Py)
								{
									b->hp -= p.dmg;
									canPShoot = true;
									Eatack = true;
								}
							}
							if(p.ch_m == 0 && p.ch_m_x == 1) // Ракеты
							{
								if(b->getX() == Px && b->getY() == Py)
								{
									if(p.rockets > 0)
									{
										b->hp -= p.rDmg;
										p.rockets--;
										canPShootR = true;
										Eatack = true;
									}
								}
							}
							if(p.ch_m == 1 && p.ch_m_x == 0) //побег
							{
								if(b->getX() == Px && b->getY() == Py) states = GAME;
							}
 
							if(p.ch_m == 1 && p.ch_m_x == 1) //аптечка
							{
								if(b->getX() == Px && b->getY() == Py)
								{
									if(p.h > 0)
									{
										p.hp += 20;
										p.h--;
										//Eatack = true;
									}
								}
							}
						}
						if(Eatack == true)
						{
							if(b->getX() == Px && b->getY() == Py)
							{
								p.hp -= b->Edmg;
								canEShoot = true;
								Eatack = false;
							}
						}
					}
				}
				if(states == INV)
				{
					for(PLit=planets.begin();PLit!=planets.end();PLit++)
					{
						Planet *a = *PLit;
						if(a->getX() == Px && a->getY() == Py)
						{
							if(p.ch_m == 0)
							{
								if(p.rockets > 0)
								{
									p.rockets--;
									p.money += a->price1;
								}
							}
						}
					}
					if(p.ch_m == 1)
					{
						if(p.h > 0)
						{
							p.h--;
							p.hp += 20;
						}
					}
				}
				if(states == GAMEOVER) gameover = true;
			}
		}
		if(!keystate[SDLK_RETURN]) ep = false;
 
		if(keystate[SDLK_i]) if(states == GAME) states = INV;
 
		if(keystate[SDLK_n])
		{
			if(np == false)
			{
				np = true;
				p.h--;
				states = GAME;
			}
		}
		if(!keystate[SDLK_n]) np = false;
 
		if(keystate[SDLK_ESCAPE])
		{
			if(esc == false)
			{
				esc = true;
				if(states == PLANET || states == INV) states = GAME;
				else if(states == BATTLE) {}
					else gameover = true;
			}
		}
		if(!keystate[SDLK_ESCAPE]) esc = false;
 
		if( Mix_PlayingMusic() == 0 )
        {
			Mix_PlayMusic( music, -1 );   
        }
 
		g.draw_map();
 
		for(PLit=planets.begin();PLit!=planets.end();PLit++)
		{
			Planet *a = *PLit;
			a->update();
		}
 
		for(it=ships.begin();it!=ships.end();/*it++*/)
		{
			Ship *b = *it;
			b->update();
			if (b->life==false)	
			{
				p.money += 50;
				p.rockets += rand()%5 * b->Elvl;
				p.h += rand()%5 * b->Elvl;
				p.exp += rand()%20 * b->Elvl / 2;
				it = ships.erase(it); 
				delete b;
			}
			else if(b->Elvl < tempLVL - 4) { it = ships.erase(it); delete b; }
			else it++;
		}
 
		p.draw();
		sprintf(tmpch, "X: %d", Px);
		img_text ( tmpch, 16, SCREEN_X - 150, 45, 255, 255, 255 );
		sprintf(tmpch, "Y: %d", Py);
		img_text( tmpch, 16, SCREEN_X - 150, 60, 255, 255, 255 );
 
		sprintf(tmpch, "HP: %i", p.hp);
		img_text( tmpch, 16, SCREEN_X - 160, 90, 255, 255, 255 );
		sprintf(tmpch, "Деньги: %i", p.money);
		img_text( tmpch, 16, SCREEN_X - 160, 105, 255, 255, 255 );
		sprintf(tmpch, "LVL: %i", p.LvL);
		img_text( tmpch, 16, SCREEN_X - 160, 120, 255, 255, 255 );
		sprintf(tmpch, "EXP: %i/%i", p.exp, nExp);
		img_text( tmpch, 16, SCREEN_X - 160, 135, 255, 255, 255 );
 
		if(states == PLANET)
		{
			sprintf(tmpch, "PLANET");
			img_text( tmpch, 16, SCREEN_X - 160, 135, 0, 255, 0 );
			m.draw();
			for(PLit=planets.begin();PLit!=planets.end();PLit++)
			{
				Planet *c = *PLit;
				if(Px == c->getX() && Py == c->getY())
				{
					sprintf(tmpch, "%s", c->name.c_str());
					img_text( tmpch, 18, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 180, 0, 0, 0 );
 
					sprintf(tmpch, "Название товара");
					img_text( tmpch, 16, m.m_rect.x+20, m.m_rect.y+45, 0, 0, 0 );//img_text( tmpch, 16, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 155, 0, 0, 0 );
 
					sprintf(tmpch, "Количество");
					img_text( tmpch, 16, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 155, 0, 0, 0 );
 
					sprintf(tmpch, "Цена");
					img_text( tmpch, 16, SCREEN_X / 2, SCREEN_Y / 2 - 155, 0, 0, 0 );
					//-----------------------------1------------------------------
					if(p.ch_m == 0)
					{
						sprintf(tmpch, "%s", c->tovar1.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 130, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->count1);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 130, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->price1);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 130, 255, 0, 0 );
					}
					else if(c->tovar1 == "Ракета" || c->tovar1 == "Аптечка")
					{
						sprintf(tmpch, "%s", c->tovar1.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 130, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->count1);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 130, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->price1);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 130, 0, 150, 0 );
					}
					else
					{
						sprintf(tmpch, "%s", c->tovar1.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 130, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->count1);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 130, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->price1);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 130, 0, 0, 0 );
					}
					//-----------------------------2--------------------------------
					if(p.ch_m == 1)
					{
						sprintf(tmpch, "%s", c->tovar2.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 105, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->count2);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 105, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->price2);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 105, 255, 0, 0 );
					}
					else if(c->tovar2 == "Ракета" || c->tovar2 == "Аптечка")
					{
						sprintf(tmpch, "%s", c->tovar2.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 105, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->count2);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 105, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->price2);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 105, 0, 150, 0 );
					}
					else
					{
						sprintf(tmpch, "%s", c->tovar2.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 105, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->count2);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 105, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->price2);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 105, 0, 0, 0 );
					}
					//-----------------------------3--------------------------------
					if(p.ch_m == 2)
					{
						sprintf(tmpch, "%s", c->tovar3.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 80, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->count3);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 80, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->price3);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 80, 255, 0, 0 );
					}
					else if(c->tovar3 == "Ракета" || c->tovar3 == "Аптечка")
					{
						sprintf(tmpch, "%s", c->tovar3.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 80, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->count3);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 80, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->price3);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 80, 0, 150, 0 );
					}
					else
					{
						sprintf(tmpch, "%s", c->tovar3.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 80, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->count3);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 80, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->price3);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 80, 0, 0, 0 );
					}
					//-----------------------------4--------------------------------------
					if(p.ch_m == 3)
					{
						sprintf(tmpch, "%s", c->tovar4.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 55, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->count4);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 55, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->price4);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 55, 255, 0, 0 );
					}
					else if(c->tovar4 == "Ракета" || c->tovar4 == "Аптечка")
					{
						sprintf(tmpch, "%s", c->tovar4.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 55, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->count4);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 55, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->price4);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 55, 0, 150, 0 );
					}
					else 
					{
						sprintf(tmpch, "%s", c->tovar4.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 55, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->count4);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 55, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->price4);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 55, 0, 0, 0 );
					}
					//-----------------------------5-------------------------------------
					if(p.ch_m == 4)
					{
						sprintf(tmpch, "%s", c->tovar5.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 30, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->count5);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 30, 255, 0, 0 );
 
						sprintf(tmpch, "%d", c->price5);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 30, 255, 0, 0 );
					}
					else if(c->tovar5 == "Ракета" || c->tovar5 == "Аптечка")
					{
						sprintf(tmpch, "%s", c->tovar5.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 30, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->count5);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 30, 0, 150, 0 );
 
						sprintf(tmpch, "%d", c->price5);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 30, 0, 150, 0 );
					}
					else
					{
						sprintf(tmpch, "%s", c->tovar5.c_str());
						img_text( tmpch, 14, SCREEN_X / 2 - 280, SCREEN_Y / 2 - 30, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->count5);
						img_text( tmpch, 14, SCREEN_X / 2 - 140, SCREEN_Y / 2 - 30, 0, 0, 0 );
 
						sprintf(tmpch, "%d", c->price5);
						img_text( tmpch, 14, SCREEN_X / 2, SCREEN_Y / 2 - 30, 0, 0, 0 );
					}
 
					sprintf(tmpch, "Для выхода нажмите ESC");
					img_text( tmpch, 18, SCREEN_X / 2 - 280, SCREEN_Y / 2 + 180, 0, 0, 0 );
				}
			}
		}
 
		if(states == INV)
		{
			sprintf(tmpch, "INVENTORY");
			img_text( tmpch, 16, SCREEN_X - 160, 135, 0, 255, 0 );
			inv.draw(212,84);
 
			sprintf(tmpch, "Название");
			img_text( tmpch, 16, inv.m_rect.x+20, inv.m_rect.y+10, 0, 0, 0 );
 
			sprintf(tmpch, "Количество");
			img_text( tmpch, 16, inv.m_rect.x+180, inv.m_rect.y+10, 0, 0, 0 );
 
			for(int i = 0; i <= maxInv; i++)
			{
				if(item[i] == 1)
				{
					if(p.ch_m == 0)
					{
						for(PLit=planets.begin();PLit!=planets.end();PLit++)
						{
							Planet *a = *PLit;
							if(a->getX() == Px && a->getY() == Py)
							{
								sprintf(tmpch, "%s продажа", items[ item[i] ].c_str());
								img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 255, 0, 0 );
 
								sprintf(tmpch, "Цена: %i", a->price1);
								img_text( tmpch, 14, inv.m_rect.x+200, inv.m_rect.y+30*i, 255, 0, 0 );
							}
						}
 
						sprintf(tmpch, "%s", items[ item[i] ].c_str());
						img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 255, 0, 0 );
 
						sprintf(tmpch, "%d", p.rockets);
						img_text( tmpch, 14, inv.m_rect.x+180, inv.m_rect.y+30*i, 255, 0, 0 );
					}
					else
					{
						for(PLit=planets.begin();PLit!=planets.end();PLit++)
						{
							Planet *a = *PLit;
							if(a->getX() == Px && a->getY() == Py)
							{
								sprintf(tmpch, "%s продажа", items[ item[i] ].c_str());
								img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 0, 0, 0 );
 
								sprintf(tmpch, "Цена: %i", a->price1);
								img_text( tmpch, 14, inv.m_rect.x+200, inv.m_rect.y+30*i, 0, 0, 0 );
							}
						}
 
						sprintf(tmpch, "%s", items[ item[i] ].c_str());
						img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 0, 0, 0 );
 
						sprintf(tmpch, "%d", p.rockets);
						img_text( tmpch, 14, inv.m_rect.x+180, inv.m_rect.y+30*i, 0, 0, 0 );
					}
				}
				if(item[i] == 2)
				{
					if(p.ch_m == 1)
					{
						sprintf(tmpch, "%s", items[ item[i] ].c_str());
						img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 255, 0, 0 );
 
						sprintf(tmpch, "%d", p.h);
						img_text( tmpch, 14, inv.m_rect.x+180, inv.m_rect.y+30*i, 255, 0, 0 );
					}
					else
					{
						sprintf(tmpch, "%s", items[ item[i] ].c_str());
						img_text( tmpch, 14, inv.m_rect.x+20, inv.m_rect.y+30*i, 0, 0, 0 );
 
						sprintf(tmpch, "%d", p.h);
						img_text( tmpch, 14, inv.m_rect.x+180, inv.m_rect.y+30*i, 0, 0, 0 );
					}
				}
			}
		}
 
		if(states == BATTLE)
		{
			sprintf(tmpch, "BATTLE");
			img_text( tmpch, 16, SCREEN_X - 160, 135, 0, 255, 0 );
			battle.draw();
 
			for(it=ships.begin();it!=ships.end();it++)
			{
				Ship *a = *it;
				if(a->getX() == Px && a->getY() == Py)
				{
					img_draw(player_rt, battle.m_rect.x+50, battle.m_rect.y+150);
					img_draw(ship_lt, battle.m_rect.x+450, battle.m_rect.y+150);
 
					sprintf(tmpch, "hp: %i",p.hp);
					img_text(tmpch, 14, battle.m_rect.x+50, battle.m_rect.y+25, 0, 255, 0 );
					sprintf(tmpch, "Ракеты: %i",p.rockets);
					img_text(tmpch, 14, battle.m_rect.x+50, battle.m_rect.y+45, 0, 255, 0 );
					sprintf(tmpch, "Аптечки: %i",p.h);
					img_text(tmpch, 14, battle.m_rect.x+50, battle.m_rect.y+65, 0, 255, 0 );
 
					sprintf(tmpch, "hp: %i",a->hp);
					img_text(tmpch, 14, battle.m_rect.x+450, battle.m_rect.y+25, 255, 0, 0 );
					sprintf(tmpch, "LVL: %i",a->Elvl);
					img_text(tmpch, 14, battle.m_rect.x+450, battle.m_rect.y+45, 255, 0, 0 );
 
					if(canPShoot)
					{
						img_draw(p_beam, PBx, PBy);
						if(PBx >= battle.m_rect.x+450-64)
						{
							canPShoot = false;
							PBx = battle.m_rect.x+104;
						}
					}
					else if(canPShootR)
					{
						img_draw(p_rocket, PBx, PBy);
						if(PBx >= battle.m_rect.x+450)
						{
							canPShootR = false;
							boom[0] = 1;
							if(boom[0] == 1) img_draw(boom_1, PBx, PBy);
							Sleep(100);
							boom[0] = 0; boom[1] = 1;
 
							if(boom[1] == 1) img_draw(boom_2, PBx, PBy);
							Sleep(100);
							boom[1] = 0; boom[2] = 1;
 
							if(boom[2] == 1) img_draw(boom_3, PBx, PBy);
							Sleep(100);
							boom[2] = 0; boom[3] = 1;
 
							if(boom[3] == 1) img_draw(boom_4, PBx, PBy);
							Sleep(100);
							boom[3] = 0; boom[4] = 1;
 
							if(boom[4] == 1) img_draw(boom_5, PBx, PBy);
							Sleep(100);
							boom[4] = 0; boom[5] = 1;
 
							if(boom[5] == 1) img_draw(boom_6, PBx, PBy);
							Sleep(100);
							boom[5] = 0; boom[6] = 1;
 
							if(boom[6] == 1) img_draw(boom_7, PBx, PBy);
							Sleep(100);
							boom[6] = 0; boom[7] = 1;
 
							if(boom[7] == 1) img_draw(boom_8, PBx, PBy);
							Sleep(100);
							boom[7] = 0; boom[8] = 1;
 
							if(boom[8] == 1) img_draw(boom_9, PBx, PBy);
							Sleep(100);
							boom[8] = 0; boom[9] = 1;
 
							if(boom[9] == 1) img_draw(boom_10, PBx, PBy);
							Sleep(100);
							boom[9] = 0;
 
							PBx = battle.m_rect.x+104;
						}
					}
 
					if(canEShoot)
					{
						img_draw(e_beam, EBx, EBy);
						if(EBx <= battle.m_rect.x+50+64)
						{
							canEShoot = false;
							EBx = battle.m_rect.x+450-64;
						}
					}
 
					if(p.ch_m == 0 && p.ch_m_x == 0)
					{
						sprintf(tmpch, "ЛАЗЕР");
						img_text(tmpch, 16, battle.m_rect.x+50, battle.m_rect.y+250, 255, 0, 0 );
					}
					else
					{
						sprintf(tmpch, "ЛАЗЕР");
						img_text(tmpch, 16, battle.m_rect.x+50, battle.m_rect.y+250, 255, 255, 255 );
					}
 
					if(p.ch_m == 0 && p.ch_m_x == 1)
					{
						sprintf(tmpch, "РАКЕТЫ");
						img_text(tmpch, 16, battle.m_rect.x+150, battle.m_rect.y+250, 255, 0, 0 );
					}
					else
					{
						sprintf(tmpch, "РАКЕТЫ");
						img_text(tmpch, 16, battle.m_rect.x+150, battle.m_rect.y+250, 255, 255, 255 );
					}
 
					if(p.ch_m == 1 && p.ch_m_x == 0)
					{
						sprintf(tmpch, "СБЕЖАТЬ");
						img_text(tmpch, 16, battle.m_rect.x+50, battle.m_rect.y+300, 255, 0, 0 );
					}
					else
					{
						sprintf(tmpch, "СБЕЖАТЬ");
						img_text(tmpch, 16, battle.m_rect.x+50, battle.m_rect.y+300, 255, 255, 255 );
					}
 
					if(p.ch_m == 1 && p.ch_m_x == 1)
					{
						sprintf(tmpch, "АПТЕЧКА");
						img_text(tmpch, 16, battle.m_rect.x+150, battle.m_rect.y+300, 255, 0, 0 );
					}
					else
					{
						sprintf(tmpch, "АПТЕЧКА");
						img_text(tmpch, 16, battle.m_rect.x+150, battle.m_rect.y+300, 255, 255, 255 );
					}
				}
			}
		}
 
		if(states == GAMEOVER)
		{
			sprintf(tmpch, "GAME OVER НАЖМИТЕ ENTER");
			img_text(tmpch, 24, SCREEN_X / 2 - 200, SCREEN_Y / 2, 255, 255, 255 );
		}
 
		SDL_UpdateRect(screen, 0, 0, 0, 0);
	}
 
	g.clean();
 
	for(PLit=planets.begin();PLit!=planets.end();PLit++)
	{
		Planet *a = *PLit;
		//PLit = planets.erase(PLit);
		delete a;
	}
 
	for(it=ships.begin();it!=ships.end();it++)
	{
		Ship *b = *it;
		//it = ships.erase(it);
		delete b;
	}
 
	return 0;
}