Skip to content
Snippets Groups Projects
Commit 2b9d435d authored by Réthelyi Bálint's avatar Réthelyi Bálint :no_mouth:
Browse files

Merge branch 'blint' into 'master'

Blint

See merge request blintmester/nhf!1
parents 17d6c313 793db82e
No related branches found
No related tags found
1 merge request!1Blint
# Default ignored files
/workspace.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/nhf.iml" filepath="$PROJECT_DIR$/.idea/nhf.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
# nhf # nhf
Prog1 NHF **Prog1 NHF**
Super Mario szerű játék, InfoC bagollyal Super Mario szerű játék, InfoC bagollyal
**Specifikáció:**
**A program célja:**
A feladat egy olyan grafikus program/játék elkészítése, ami hasonlít a Super Mario nevű játékra.
**A játék működése:**
A karakterrel (InfoC bagoly) egy 2D-s pályán kell végigmenni, a pályán össze kell gyűjteni különböző tárgyakat, melyek a pálya teljesítésénél beleszámítanak az eredménybe (kapott pont).
Minél tovább jutunk a pályán, annál nehezebb lesz összeszedni a tárgyakat.
A program legyen menüvezérelt, azaz a felhasználó tudjon választani hogy új játékot szeretne-e játszani, betöltleni egy korábbi játékállást, vagy a szabályokat elolvasni.
A programnak el kell tudni menteni az aktuális játékállást (egy későbbiekben kitalálandó formátumban) minden teljesített pálya végén, vagy a pályákon belüli checkpointokon (ez a pályák hosszától függ majd, pályagenerálásnál kiderül, melyiket érdemesebb),
illetve a felhasználó a játékot megállítva bármikor mentheti a játékot, saját mentésnévvel.
A program legyen képes kezelni a különböző felhasználókat is, a játékállásokat a felhasználókhoz mentse, ehhez az új játék elején be kell kérni a felhasználó nick-nevét.
/snap/clion/92/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/blint/projects/nhf /snap/clion/92/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /home/blint/projects/nhf
-- The C compiler identification is GNU 9.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for one of the modules 'sdl2'
-- Checking for one of the modules 'SDL2_gfx'
-- Configuring done -- Configuring done
-- Generating done -- Generating done
-- Build files have been written to: /home/blint/projects/nhf/cmake-build-debug -- Build files have been written to: /home/blint/projects/nhf/cmake-build-debug
No preview for this file type
No preview for this file type
...@@ -5,12 +5,13 @@ ...@@ -5,12 +5,13 @@
#include <stdio.h> #include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
typedef struct move{ int H = 600;
bool left; int W = 800;
bool right; int owl = 50;
bool up; int v = 10;
bool down;
typedef struct move{
bool left, right, up, down;
} move; } move;
void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer) { void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer) {
...@@ -38,24 +39,114 @@ void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prende ...@@ -38,24 +39,114 @@ void sdl_init(int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prende
void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y) { void kirajzol(SDL_Renderer *renderer, SDL_Texture *kep, int x, int y) {
SDL_Rect src = {0, 0, 128, 128}; SDL_Rect src = {0, 0, 128, 128};
SDL_Rect dest = {x, y, 50, 50}; SDL_Rect dest = {x, y, owl, owl};
SDL_RenderCopy(renderer, kep, &src, &dest); SDL_RenderCopy(renderer, kep, &src, &dest);
} }
/*void mozgas(move *m, SDL_Renderer **renderer, SDL_Texture **kep, int *elozo_x, int *elozo_y)
{
if (m->left)
{
SDL_RenderClear(*renderer);
*elozo_x -= v;
if (*elozo_x < 1)
*elozo_x = 0;
if (m->up)
{
*elozo_y -= v;
if (*elozo_y < 1)
*elozo_y = 0;
}
if (m->down)
{
*elozo_y += v;
if (*elozo_y > H - owl + 1)
*elozo_y = H - owl;
}
kirajzol( *renderer, *kep, *elozo_x, *elozo_y);
m->left = false;
}
if (m->right)
{
SDL_RenderClear(*renderer);
*elozo_x += v;
if (*elozo_x > W - owl - 1)
*elozo_x = W - owl;
if (m->up)
{
*elozo_y -= v;
if (*elozo_y < 1)
*elozo_y = 0;
}
if (m->down)
{
*elozo_y += v;
if (*elozo_y > H - owl + 1)
*elozo_y = H - owl;
}
kirajzol( *renderer, *kep, *elozo_x, *elozo_y);
m->right = false;
}
if (m->up)
{
SDL_RenderClear(*renderer);
*elozo_y -= v;
if (*elozo_y < 1)
*elozo_y = 0;
if (m->left)
{
*elozo_x -= v;
if (*elozo_x < 1)
*elozo_x = 0;
}
if (m->right)
{
*elozo_x += v;
if (*elozo_x > W - owl - 1)
*elozo_x = W - owl;
}
kirajzol( *renderer, *kep, *elozo_x, *elozo_y);
m->up = false;
}
if (m->down)
{
SDL_RenderClear(*renderer);
*elozo_y += v;
if (*elozo_y > H - owl + 1)
*elozo_y = H - owl;
if (m->left)
{
*elozo_x -= v;
if (*elozo_x < 1)
*elozo_x = 0;
}
if (m->right)
{
*elozo_x += v;
if (*elozo_x > W - owl - 1)
*elozo_x = W - owl;
}
kirajzol( *renderer, *kep, *elozo_x, *elozo_y);
m->down = false;
}
}*/
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
SDL_Window *window; SDL_Window *window;
SDL_Renderer *renderer; SDL_Renderer *renderer;
sdl_init(800, 600, &window, &renderer); sdl_init(W, H, &window, &renderer);
//stringRGBA(renderer, 80, 400, "Kilepeshez piros X az ablakon vagy ESC billentyu", 255, 255, 255, 255);
SDL_RenderPresent(renderer); //az elvegzett rajzolasok a kepernyore SDL_RenderPresent(renderer); //az elvegzett rajzolasok a kepernyore
SDL_Texture *kep = IMG_LoadTexture(renderer, "infoc.png"); SDL_Texture *kep = IMG_LoadTexture(renderer, "infoc.png");
if (kep == NULL) { if (kep == NULL)
{
SDL_Log("Nem nyithato meg a kepfajl: %s", IMG_GetError()); SDL_Log("Nem nyithato meg a kepfajl: %s", IMG_GetError());
exit(1); exit(1);
} }
...@@ -63,57 +154,22 @@ int main(int argc, char *argv[]) { ...@@ -63,57 +154,22 @@ int main(int argc, char *argv[]) {
bool quit = false; bool quit = false;
bool moving = false; bool moving = false;
move m; move m;
bool left = false; m.left = false;
bool right = false; m.right = false;
bool up = false; m.up = false;
bool down = false; m.down = false;
int elozo_x = 250; int elozo_x = 250;
int elozo_y = 250; int elozo_y = 250;
int vx = 0;
int vy = 0;
while (!quit) { while (!quit) {
if (moving) /*if (moving)
{
if (left)
{ {
SDL_RenderClear(renderer); mozgas(&m, &renderer, &kep, &elozo_x, &elozo_y);
elozo_x -= 10; }*/
if (elozo_x < 1)
elozo_x = 0;
kirajzol( renderer, kep, elozo_x, elozo_y);
left = false;
}
if (right)
{
SDL_RenderClear(renderer);
elozo_x += 10;
if (elozo_x > 800 - 49)
elozo_x = 800 - 50;
kirajzol( renderer, kep, elozo_x, elozo_y);
right = false;
}
if (up)
{
SDL_RenderClear(renderer);
elozo_y -= 10;
if (elozo_y < 1)
elozo_y = 0;
kirajzol( renderer, kep, elozo_x, elozo_y);
up = false;
}
if (down)
{
SDL_RenderClear(renderer);
elozo_y += 10;
if (elozo_y > 600 - 51)
elozo_y = 600 - 50;
kirajzol( renderer, kep, elozo_x, elozo_y);
down = false;
}
}
SDL_Event ev; SDL_Event ev;
SDL_WaitEvent(&ev); SDL_WaitEvent(&ev);
...@@ -121,17 +177,20 @@ int main(int argc, char *argv[]) { ...@@ -121,17 +177,20 @@ int main(int argc, char *argv[]) {
switch (ev.type) { switch (ev.type) {
case SDL_KEYDOWN: case SDL_KEYDOWN:
switch (ev.key.keysym.sym) { if (ev.key.keysym.sym == SDLK_a) {
case (SDLK_a): vx = -1;
left = true; }
break;
case SDLK_d: if (ev.key.keysym.sym == SDLK_d) {
right = true; vx = 1;
break; }
case SDLK_w: up = true; //down = false;
break; if (ev.key.keysym.sym == SDLK_w) {
case SDLK_s: down = true; //up = false; vy = -1;
break; }
if (ev.key.keysym.sym == SDLK_s) {
vy = 1;
} }
case SDL_KEYUP: case SDL_KEYUP:
...@@ -142,14 +201,42 @@ int main(int argc, char *argv[]) { ...@@ -142,14 +201,42 @@ int main(int argc, char *argv[]) {
break; break;
case SDLK_ESCAPE: quit = true; case SDLK_ESCAPE: quit = true;
break; break;
case SDLK_a:
if (vx < 0)
vx = 0;
break;
case SDLK_d:
if (vx > 0)
vx = 0;
break;
case SDLK_w:
if (vy < 0)
vy = 0;
break;
case SDLK_s:
if (vy > 0)
vy = 0;
break;
default:
break;
} }
break; break;
case SDL_QUIT: case SDL_QUIT:
quit = true; quit = true;
break; break;
default:
break;
} }
elozo_x += vx;
elozo_y += vy;
kirajzol(renderer, kep, elozo_x, elozo_y);
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment