Skocz do zawartości

SDL szkielet mapy do gier


htwe

Polecane posty

Wie ktoś jak zbudować mapkę do gier? Mniej więcej widzę to tak, że w tablicy byłyby podane cyfry odpowiadające kafelkom. Problemem jest słaba znajomość SDL, jedyne co potrafie to załadować obrazek i poruszać nim po obrazie. Korzystam z kompilatora DEV.
Link do komentarza
Udostępnij na innych stronach

No właśnie problemem jest napisanie tego w SDL. To moja pierwsza próba napisania czegoś przypominającego grę w SDL. Pierwotnie chciałem załadować pierońską mapę, a potem ją przesuwać z postacią umieszczoną centralnie, ale dowiedziałem się że będzie to działało baaaardzo powoli i tylko na mocnych kompach. Z tym żaden problem. Wymyśliłem więc ten sposób z tablicą bo wydał się szybszy, jednak nie wiem jak to zrobić.
Link do komentarza
Udostępnij na innych stronach

[b]zalerzy jaka to ma byc mapa, jesli to ma byc zwykle poukladanie kafli (jak puzzle) to pogombinuj z tablica i pentlami a jesli ci cos nie wychodzi to podaj kod to sie poradzi smile.gif
a jesli to ma byc jakas bardziej skomplikowana mapa to powiedz cos wiecej :>

"Bogowie to bugi ludzkich umysłów" Gifanonim ®

Link do komentarza
Udostępnij na innych stronach

Właśnie zauważyłem pierwszy problem, wiem jak działają tablice ale i tak nie wiem jak przyporządkować im kafle. Na razie wygląda to tak:

Pascal#include <string.h>
#include <SDL/SDL.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

SDL_Surface *screen;


void Draw(int x, int y, SDL_Surface *sprite);

int main(int nArgs, char **args)
{
SDL_Surface *image;
bool isRunning;

SDL_Init(SDL_INIT_VIDEO);
atexit(SDL_Quit);

screen = SDL_SetVideoMode(800, 600, 0, SDL_HWSURFACE|SDL_DOUBLEBUF);
image = SDL_LoadBMP("kafel_trawa.bmp");

isRunning = true;

while(isRunning)
{
SDL_Event event;
SDL_PollEvent(&event);

if (event.type == SDL_QUIT)
isRunning = false;

int x, y, e, d, wlk_kaf;
e=0; x=0; d=0; wlk_kaf=80;

for(d=0; d<5; d++){
do{
Draw(0+x,0+y,image);
x+=80;
e++;
}while(e<10);
x=0; e=0; y+=wlk_kaf;}


SDL_Flip(screen);

}

SDL_FreeSurface(image);

return 0;
}

void Draw(int x, int y, SDL_Surface *sprite)
{
SDL_Rect source;
SDL_Rect dest;

source.x = 0;
source.y = 0;
source.w = sprite->w;
source.h = sprite->h;

dest.x = x;
dest.y = y;
dest.w = source.w;
dest.h = source.h;

SDL_BlitSurface(sprite, &source, screen, &dest);

return;
}


Więc jak zrobić coś takiego tylko że za pomocą tablic?

// stosuj tagi: syntax="cpp", masz przyciski obok etykiety Kod - Iskar
Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Gość
Temat jest zablokowany i nie można w nim pisać.
×
×
  • Utwórz nowe...