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; }