kleines raumschiff spiel mit allegro
-
hallo allerseits
ich habe gerade ein bischen mit allegro programmiert und jetzt hale
ich mal ein kleines sample geschreiben für ein raumschiff spiel ^^ich ´selbst finde den code total hammer
#include <allegro.h> #include <winalleg.h> volatile bool Close = false; volatile bool done = false; void Handler() {Close = true;} void Handler2() {done = true;} void game_ini(); void title(); void load_cache(); BITMAP *bild1; BITMAP *bild2; BITMAP *bild3; BITMAP *buffer; int shoot_ini = 0; int ship_x = 300; int ship_y = 300; int shoot_x = ship_x; int shoot_y = ship_y; int title_ini = 1; int counter =0; char score[]= {"score"}; int main() { allegro_init(); install_keyboard(); install_mouse(); set_color_depth(16); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0); set_window_title("Star-Battle 1.0"); //-------------------------------------------// load_cache(); title(); while (!Close) { game_ini(); } } END_OF_MAIN(); void load_cache() { buffer = create_bitmap(SCREEN_W, SCREEN_H); bild1 = load_bitmap("data\\bmp\\bild1.bmp",NULL); bild2 = load_bitmap("data\\bmp\\bild2.bmp",NULL); bild3 = load_bitmap("data\\bmp\\title1.bmp",NULL); } void title() { if (title_ini = 1) { draw_sprite(screen,bild3,150,150); textprintf_ex(screen, font, 300, 500, makecol(255, 255, 255), makecol(0, 0, 0), "Press Enter to Start"); Sleep(3000); title_ini = 0; } } void game_ini() { while(!done) { clear(buffer); if(title_ini == 0) { draw_sprite(buffer,bild1,ship_x,ship_y); textprintf_ex(buffer, font, 0, 0, makecol(255, 255, 255), -1, "Score: %d",counter); if (shoot_ini == 1) { draw_sprite(buffer,bild2,shoot_x+40,shoot_y); shoot_y--; } if(shoot_y == 20) { counter++; Handler2(); // close while loop } } // title = 0 loop blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H); //-------------------------------------------// if(key[KEY_LEFT]) { ship_x--; } if(key[KEY_RIGHT]) { ship_x++; } if(key[KEY_UP]) { ship_y--; } if(key[KEY_DOWN]) { ship_y++; } if(key[KEY_SPACE] and shoot_ini == 0) // shoot { shoot_ini = 1; } if(key[KEY_ESC]) // shoot { Handler(); Handler2(); // close while-loop } } shoot_ini = 0; // reset int shoot_x = ship_x; // reset x shoot_y = ship_y; // reset y done = false; }
jetzt will ich noch feine machen , die "runter fallen"
wie kann man das machen das per zufall die sprites an bestimmten stellen sind- ist das machbar wenn ja wie ???
danke im vorraus
-
wenn du schon soviel geschaft hast, kannst du uns doch sicher sagen, wo genau du bei dem letzten rest stockst, oder?
-
es geht mir ehr um den zufall - also
... so ungefähr... int x = zufalls zahl bis 700 int y = zufalls zahl bis 200 draw_sprite(buffer,bild,x,y) ...
-
Meinst du so etwas?
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
-
hab was gefunden im inet und bearbeitet
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> int main() { int i; time_t t; time(&t); srand((unsigned int)t); /* Zufallsgenerator initialisieren */ for ( i=0; i<20; i++ ) printf("%d ", rand() % 6 + 1); /* Wuerfeln */ printf("\n"); Sleep(1000); return 0; }
so jetzt muss ich den kram ins spiel rein bringen
-
irgentwie tuts das nicht
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #include <iostream> using namespace std; int main() { int x; int y =0; time_t t; time(&t); srand((unsigned int)t); for ( y=0; y<1; y++ ) rand() % 400 + 1; cout<<y; Sleep(3000); return 0; }
der zeigt nur 1 an und kein zufalls wert
ich will aber das sich int ändert zur zufalls zahl nicht
aus int irgenteine ausgibt
-
Alles was die Schleife macht ist eben ein Inkrement von y von 0 auf 1. Wie willst du auch irgendwas aendern, wenn du in der Schleife keine Zuweisung machst?
-
bei snake ist das doch auch so das ein object immer an einer anderen stelle liegt
-
so habs hinbekommen ...mithilfe von google uns selber experimentieren
/* rand example: guess the number */ #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #include <iostream> using namespace std; int main () { int y, x; srand(time(0)); y= rand() % 400 + 1;; cout<<y; Sleep(3000); return 0; }
-
#include <cstdlib> int Ergebnis = std::rand() % Maximalwert;
Seed kann man mit
std::time()
machen.
-
geil das tuts !!!! - zwar noch grotten schlecht und ein bischen verbugt aber egal^^