Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Prezentacja][Gra] KillBox


Rekomendowane odpowiedzi

Opublikowano


Cześć

Siema, ogólnie pomyślałem że zrobię jakiś temat z prezentacją mojej pracy - codziennie

będą nowe aktualizacje kodu i inne bzdety ;) Liczę na waszą ostrą krytykę [ Oczywiście w stronę

tego co robię źle a nie moją]


Wyjaśnienie

Projekt powstał - 30 minut temu?

Allegro i c++ staram się ogarnąć od - tygodnia?

 

Lubię widzieć efekty pracy więc stąd ten pomysł.

Gra będzie polegała na zabijaniu swoich przeciwników - kwadratów z jakiś

pocisków itd. Będzie można zbierać bronie i inne duperele, na razie gra jest

zwykłym prostackim kodem który chcę rozwinąć w dobrą gierkę.


 

 

//===================================================================================================
class Cpostac
{
  public:
		 short int x,y;
		 short int s,w;
};

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2)
{
 if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
 if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
 if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
 if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
 else return false;
};
bool kolizjaprawo(int x1, int y1, int s1, int w1)
{
if(x1 > 600) return true;
else return false;
};
bool kolizjadol(int x1, int y1, int s1, int w1)
{
if(y1 > 445) return true;
else return false;
};
bool kolizjalewo(int x1, int y1, int s1, int w1)
{
if(x1 < 0) return true;
else return false;
};
bool kolizjagora(int x1, int y1, int s1, int w1)
{
if(y1 < 0) return true;
else return false;
};

Cpostac ludek1, ludek2;
//===================================================================================================
#include <allegro.h>

volatile long speed = 0;
void increment_speed()
{
speed++;
}
END_OF_FUNCTION(increment_speed);

LOCK_VARIABLE(speed);
LOCK_FUNCTION(increment_speed);

int main()
{
double przys = 1;

allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
install_timer();
install_int_ex(increment_speed, BPS_TO_TIMER(250));

BITMAP *bufor = NULL;
BITMAP *ludekb1 = NULL;
BITMAP *ludekb2 = NULL;

bufor = create_bitmap(640,480);
ludekb1 = load_bmp("ludekb1.bmp",default_palette);
ludekb2 = load_bmp("ludekb2.bmp",default_palette);

ludek1.x=100; ludek1.y=100; ludek1.s=40; ludek1.w=40;
ludek2.x=300; ludek2.y=100; ludek2.s=40; ludek2.w=40;

while( !key[KEY_ESC])
{
while( speed > 0)
{
if( key[KEY_LEFT]) ludek1.x--, ludek1.x -= przys;
if( key[KEY_RIGHT]) ludek1.x++, ludek1.x += przys;
if( key[KEY_UP]) ludek1.y--, ludek1.y -= przys;
if( key[KEY_DOWN]) ludek1.y++, ludek1.y += przys;

if( ludek1.x > ludek2.x ) ludek2.x ++;
if( ludek1.x < ludek2.x ) ludek2.x --;
if( ludek1.y > ludek2.y ) ludek2.y++;
if( ludek1.y < ludek2.y ) ludek2.y--;



speed--;
}
clear_to_color(bufor, makecol(150,150,150));
masked_blit( ludekb1, bufor, 0,0, ludek1.x, ludek1.y, ludek1.s, ludek1.w);
masked_blit( ludekb2, bufor, 0,0, ludek2.x, ludek2.y, ludek2.s, ludek2.w);

if( kolizja( ludek1.x,ludek1.y,ludek1.s, ludek1.w, ludek2.x, ludek2.y, ludek2.s, ludek2.w)==true)
{ textout_ex(bufor,font,"Kolizja !",20,20 ,makecol(255,200,255),-1); }

if( kolizjaprawo( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
{ ludek1.x--; }

 if( kolizjadol( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
{ ludek1.y--; }

 if( kolizjalewo( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
{ ludek1.x++; }

 if( kolizjagora( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
{ ludek1.y++; }

blit( bufor, screen, 0,0,0,0, 640,480);
}
destroy_bitmap(bufor);
destroy_bitmap(ludekb1);
destroy_bitmap(ludekb2);

allegro_exit();
return 0;
}
END_OF_MAIN();
//===================================================================================================

 

 

 

Prosiłbym nie pisać komentarzy że to gówno nie gra - uczę się, mogę wam gwarantować

że będę tą grę codziennie rozwijać


LAYOUT'Y POD SERWER MINECRAFT U MNIE. ZAPRASZAM PW

Weteran
Opublikowano

Póki co nic specjalnego ;]

Chodź będzie można coś z tego zrobić, kiedyś była taka stara gra, w której uciekało od jakiego pająka i trzeba było jak najwięcej klocków rozwalić czy coś takiego... coś jak w tym twoim programie.

A i widać że funkcja kolizji zerżnięta z easykodera ;>

 

Ale jak na początek to ujdzie.

Opublikowano

To nie SVN czy inny git, nie masz tu wstawiać co chwila kodu, możesz co najwyżej zaprezentować jakieś skriny i src.

A więc czekamy na skriny.

btw. zdecyduj się - piszesz obiektowo czy strukturalnie?

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

Opublikowano

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2)

Cóż to jest za stwór?

 

Dlaczego nie bool kolizja(CPostac const& postac) ?

Ta sygnatura jest pusta.

Opublikowano

Ogólnie kolizje brałem z jakiegoś poradnika easykoder bo musiałem się

z czego nauczyć

 

Co do ss'ów - nie ma co na razie dawać

LAYOUT'Y POD SERWER MINECRAFT U MNIE. ZAPRASZAM PW

Weteran
Opublikowano

btw. zdecyduj się - piszesz obiektowo czy strukturalnie?

Allegro nie jest obiektową biblioteką, piszę się w niej właśnie w taki sposób jak koniuh, ewentualnie dla wygody pakuje się funkcję do oddzielnych plików.

Opublikowano

@XAULIN

Chodziło mi o tego potworka któreg wymienił aggr, i o resztę. Przecież można to ładnie opakować w klasy...

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

  • 4 tygodnie później...
Opublikowano

Odświeżam.

 

Dostałem unbana więc zaczynam od nowa.

Kod biorę z pierwszego posta więc jutro najprędzej wstawię coś nowego.

 

Czekam na wasze opinie

 

Co na dziś

  • Poprawa kolizji ze ścianami < tzn ramką > DONE

 

//===================================================================================================
class Cpostac
{
	  public:
					 short int x,y;
					 short int s,w;
};

bool kolizja(int x1,int y1,int s1,int w1,int x2,int y2,int s2,int w2)
{
	 if( x2<=x1+s1 && x2>x1 && y2>=y1 && y2<=y1+w1) return true; else
	 if( x2<=x1+s1 && x2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true; else
	 if( x2+s2<=x1+s1 && x2+s2>x1 && y2>=y1 && y2<=y1+w1) return true; else
	 if( x2+s2<=x1+s1 && x2+s2>x1 && y2+w2>=y1 && y2+w2<=y1+w1) return true;
	 else return false;
};
bool kolizjaprawo(int x1, int y1, int s1, int w1)
{
if(x1 > 600) return true;
else return false;
};
bool kolizjadol(int x1, int y1, int s1, int w1)
{
if(y1 > 440) return true;
else return false;
};
bool kolizjalewo(int x1, int y1, int s1, int w1)
{
if(x1 < 0) return true;
else return false;
};
bool kolizjagora(int x1, int y1, int s1, int w1)
{
if(y1 < 0) return true;
else return false;
};

Cpostac ludek1, ludek2;
//===================================================================================================
#include <allegro.h>

	volatile long speed = 0;
	void increment_speed()
{
	speed++;
}
	END_OF_FUNCTION(increment_speed);

	LOCK_VARIABLE(speed);
	LOCK_FUNCTION(increment_speed);

int main()
{
	double przys = 1;

	allegro_init();
	install_keyboard();
	set_color_depth(16);
	set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);
	install_timer();
	install_int_ex(increment_speed, BPS_TO_TIMER(250));

	BITMAP *bufor = NULL;
	BITMAP *ludekb1 = NULL;
	BITMAP *ludekb2 = NULL;

	bufor = create_bitmap(640,480);
	ludekb1 = load_bmp("ludekb1.bmp",default_palette);
	ludekb2 = load_bmp("ludekb2.bmp",default_palette);

	ludek1.x=100; ludek1.y=100; ludek1.s=40; ludek1.w=40;
	ludek2.x=300; ludek2.y=100; ludek2.s=40; ludek2.w=40;

	while( !key[KEY_ESC])
{
	while( speed > 0)
{
	if( key[KEY_LEFT]) ludek1.x--, ludek1.x -= przys;
	if( key[KEY_RIGHT]) ludek1.x++, ludek1.x += przys;
	if( key[KEY_UP]) ludek1.y--, ludek1.y -= przys;
	if( key[KEY_DOWN]) ludek1.y++, ludek1.y += przys;

	if( ludek1.x > ludek2.x ) ludek2.x ++;
	if( ludek1.x < ludek2.x ) ludek2.x --;
	if( ludek1.y > ludek2.y ) ludek2.y++;
	if( ludek1.y < ludek2.y ) ludek2.y--;



	speed--;
}
	clear_to_color(bufor, makecol(150,150,150));
	masked_blit( ludekb1, bufor, 0,0, ludek1.x, ludek1.y, ludek1.s, ludek1.w);
	masked_blit( ludekb2, bufor, 0,0, ludek2.x, ludek2.y, ludek2.s, ludek2.w);

	if( kolizja( ludek1.x,ludek1.y,ludek1.s, ludek1.w, ludek2.x, ludek2.y, ludek2.s, ludek2.w)==true)
	{ textout_ex(bufor,font,"Kolizja !",20,20 ,makecol(255,200,255),-1); }

	if( kolizjaprawo( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
	{ ludek1.x--, ludek1.x--, ludek1.x--, ludek1.x--; }

	 if( kolizjadol( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
	{ ludek1.y--, ludek1.y--, ludek1.y--, ludek1.y--; }

	 if( kolizjalewo( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
	{ ludek1.x++, ludek1.x++, ludek1.x++, ludek1.x++; }

	 if( kolizjagora( ludek1.x,ludek1.y,ludek1.s,ludek1.w)==true)
	{ ludek1.y++, ludek1.y++, ludek1.y++, ludek1.y++; }

	blit( bufor, screen, 0,0,0,0, 640,480);
}
	destroy_bitmap(bufor);
	destroy_bitmap(ludekb1);
	destroy_bitmap(ludekb2);

	allegro_exit();
	return 0;
}
	END_OF_MAIN();
//===================================================================================================

  • Ogarnięcie grafiki
  • Nadanie grze większego sensu i przemyślenie co dalej

Co na jutro

  • Zrobienie menu gry
  • Stworzenie wszystkiego co potrzebne do grafiki

LAYOUT'Y POD SERWER MINECRAFT U MNIE. ZAPRASZAM PW

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...