Вы находитесь на странице: 1из 5

#include

#include
#include
#include

<SDL.h>
<cstdlib>
<iostream>
<ctime>

int main(int argc, char* args[])


{
std::srand((unsigned int)time(0));
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
SDL_Event e;
bool run = true;
SDL_Surface*
SDL_Surface*
SDL_Surface*
SDL_Surface*
SDL_Surface*
SDL_Rect
SDL_Rect
SDL_Rect
SDL_Rect

green = NULL;
blue = NULL;
red = NULL;
gamewin = NULL;
gamelose = NULL;

placeA
placeB
placeC
placeD

=
=
=
=

{
{
{
{

70, 70, 100, 100 };


170, 70, 100, 100 };
70, 170, 100, 100 };
170, 170, 100, 100 };

SDL_Rect placeMsg = {20, 120, 300, 100 };


int playerX = 0;
int playerY = 0;
SDL_Rect playerRect = { 70, 70, 100, 100 };
int enemyX = 1;
int enemyY = 1;
SDL_Rect enemyRect = { 170, 170, 100, 100 };
int gamestate = 0;
bool playerHasMoved = false;
if (run)
{
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL could not initialize! SDL_Error: %s\n", SDL_
GetError());
run = false;
}
}
if (run)
{
window = SDL_CreateWindow("TinyGame", SDL_WINDOWPOS_UNDEFINED, S
DL_WINDOWPOS_UNDEFINED, 340, 340, SDL_WINDOW_SHOWN);
if (window == NULL)
{
printf("Window could not be created! SDL_Error: %s\n", S
DL_GetError());
run = false;
}
else

{
surface = SDL_GetWindowSurface(window);
}
}
if (run)
{
green = SDL_LoadBMP("Media/Green.bmp");
if (green == NULL)
{
printf("Unable to load image %s! SDL Error: %s\n", "Medi
a/Green.bmp", SDL_GetError());
run = false;
}
}
if (run)
{
blue = SDL_LoadBMP("Media/Blue.bmp");
if (blue == NULL)
{
printf("Unable to load image %s! SDL Error: %s\n", "Medi
a/Blue.bmp", SDL_GetError());
run = false;
}
}
if (run)
{
red = SDL_LoadBMP("Media/Red.bmp");
if (red == NULL)
{
printf("Unable to load image %s! SDL Error: %s\n", "Medi
a/Red.bmp", SDL_GetError());
run = false;
}
}
if (run)
{
gamewin = SDL_LoadBMP("Media/GameWin.bmp");
if (gamewin == NULL)
{
printf("Unable to load image %s! SDL Error: %s\n", "Medi
a/GameWin.bmp", SDL_GetError());
run = false;
}
}
if (run)
{
gamelose = SDL_LoadBMP("Media/GameLose.bmp");
if (gamelose == NULL)
{
printf("Unable to load image %s! SDL Error: %s\n", "Medi
a/GameLose.bmp", SDL_GetError());
run = false;
}
}

while (run)
{
while (SDL_PollEvent(&e) != 0)
{
if (e.type == SDL_QUIT)
{
run = false;
}
else if (e.type == SDL_KEYDOWN)
{
switch (e.key.keysym.sym)
{
case SDLK_ESCAPE:
run = false;
break;
case SDLK_RETURN:
gamestate = 0;
playerHasMoved = false;
playerX = 0;
playerY = 0;
playerRect.x = 70;
playerRect.y = 70;
enemyX = 1;
enemyY = 1;
enemyRect.x = 170;
enemyRect.y = 170;
break;
case SDLK_UP:
if (playerY > 0 && gamestate == 0)
{
playerHasMoved = true;
playerY--;
playerRect.y = 70 + playerY * 10
0;
if (playerX == enemyX && playerY
== enemyY)
gamestate = 2;
}
break;
case SDLK_DOWN:
if (playerY < 1 && gamestate == 0)
{
playerHasMoved = true;
playerY++;
playerRect.y = 70 + playerY * 10
0;
if (playerX == enemyX && playerY
== enemyY)
gamestate = 2;
}
break;
case SDLK_LEFT:
if (playerX > 0 && gamestate == 0)
{
playerHasMoved = true;
playerX--;

playerRect.x = 70 + playerX * 10
0;
if (playerX == enemyX && playerY
== enemyY)
gamestate = 2;
}
break;
case SDLK_RIGHT:
if (playerX < 1 && gamestate == 0)
{
playerHasMoved = true;
playerX++;
playerRect.x = 70 + playerX * 10
0;
if (playerX == enemyX && playerY
== enemyY)
gamestate = 2;
}
break;
}
}
}
if (playerHasMoved
{
int action
if (action
{
if

&& gamestate == 0)
= std::rand() % 3;
== 0)

(enemyX == 0)
enemyX++;
else
enemyX--;
enemyRect.x = 70 + enemyX * 100;

}
if (action == 1)
{
if (enemyY == 0)
enemyY++;
else
enemyY--;
enemyRect.y = 70 + enemyY * 100;
}
if (playerX == enemyX && playerY == enemyY)
gamestate = 1;
playerHasMoved = false;
}
SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 0x00, 0x
00, 0x00));
SDL_BlitSurface(green,
SDL_BlitSurface(green,
SDL_BlitSurface(green,
SDL_BlitSurface(green,

NULL,
NULL,
NULL,
NULL,

surface,
surface,
surface,
surface,

&placeA);
&placeB);
&placeC);
&placeD);

if (gamestate != 1)
SDL_BlitSurface(blue, NULL, surface, &playerRect);
if (gamestate != 2)
SDL_BlitSurface(red, NULL, surface, &enemyRect);

if( gamestate == 1)
SDL_BlitSurface(gamelose, NULL, surface, &placeMsg);
if (gamestate == 2)
SDL_BlitSurface(gamewin, NULL, surface, &placeMsg);
SDL_UpdateWindowSurface(window);
}
SDL_FreeSurface(gamelose);
gamelose = NULL;
SDL_FreeSurface(gamewin);
gamewin = NULL;
SDL_FreeSurface(red);
red = NULL;
SDL_FreeSurface(blue);
blue = NULL;
SDL_FreeSurface(green);
green = NULL;
SDL_FreeSurface(surface);
surface = NULL;
SDL_DestroyWindow(window);
window = NULL;
SDL_Quit();
return 0;
}

Вам также может понравиться