|
|
Objekte plazieren
#314449
03/08/10 17:59
03/08/10 17:59
|
Joined: Mar 2010
Posts: 7
dalco
OP
Newbie
|
OP
Newbie
Joined: Mar 2010
Posts: 7
|
hallo, noch eine anfängerfrage um reinzukommen: ich möchte spielsteine setzen, zb 60 stück, jedes ist ein bild, wollte sie hiermit setzen, geht aber nie:
var i=0; var name[3] = {"s1","s2","s3" }; var xpos[3] = {100,200,300 }; var ypos[3] = {100,200,300 };
while(i<3) { PANEL* name[i] = { bmap = "blocA.jpg"; layer = 11; pos_x = xpos[i]; pos_y = ypos[i]; flags = SHOW; } i=i+1; }
ist exemplarisch nur für 3, wollte dann halt ein mehrdimensionalles array nutzen, damit ich am anfang schnell und übersichtlich alle 60 setzen kann, brauch ja auch zugriff auf alle x/y positionen für spätere kollisionsprüfung.
wie macht man sowas sinnvoll, wie spreche ich sie an, über den namen??? danke für eine hilfe zum reinkommen
ps. gibt es keine for-schleifen ??? gruss dalco
Last edited by dalco; 03/08/10 18:00.
|
|
|
Re: Objekte plazieren
[Re: dalco]
#314450
03/08/10 18:02
03/08/10 18:02
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
PANEL* pnl_temp; var pnl_array[60],i; for(i=0;i<60;i++) { pnl_temp = pan_create("bmap = "blocA.jpg;",11); pnl_array[i] = handle(pnl_temp); }
Dann später im Skript:
pnl_temp = ptr_for_handle(pnl_array[i]); pnl_temp.pos_x = ...
EDIT: Doch, es gibt for-Schleifen.
Last edited by Superku; 03/08/10 18:02.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
Re: Objekte plazieren
[Re: Superku]
#314500
03/08/10 22:29
03/08/10 22:29
|
Joined: Mar 2010
Posts: 7
dalco
OP
Newbie
|
OP
Newbie
Joined: Mar 2010
Posts: 7
|
danke, aber dein code funktioniert nicht, vorallem diese zeile: pnl_temp = pan_create("bmap = "blocA.jpg;",11); und wie können alle 60 steine unterschiedliche x/y position haben?
mit java machte ich es immer so: ich habe eine klasse: spielstein mit 4 parametern: int status => welche art von stein, zb 1= ziel, 2= feind image = bild des steines int xpos int ypos
in der hauptklasse habe ich dann ein array davon erzeugt mit zb 60 steinen:
spielstein[] steine = new spielstein[60] dieses wurde gefüllt und eben wieder mit for-schleifen durchlaufen um alle möglichen kollisionen zu testen, etc.....
so wollte ich es hier aus umsetzen, könnte ich eine klasse schreiben so wie beschrieben oder muss hier immer alles in dem einen zb. mygame.c document stehen.
danke für weitere konkrete tipps, anleitungen(bei der von dieser seite hier fehlen find ich wichtige sachen) oder code gruss tino
Last edited by dalco; 03/08/10 22:42.
|
|
|
Re: Objekte plazieren
[Re: dalco]
#314508
03/08/10 23:19
03/08/10 23:19
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
dein code funktioniert nicht Ich weiß, war auch nicht implementationsbereit. Und benutze besser nicht *.jpg, warum, steht im Manual.
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////
BMAP* bmp_bild = "kreis.tga";
function main() {
PANEL* pnl_temp;
var pnl_array[60],i;
fps_max = 60;
video_mode = 11;
for(i=0;i<60;i++) {
pnl_temp = pan_create("bmap = bmp_bild; flags = SHOW;",11);
pnl_array[i] = handle(pnl_temp);
}
while(1) {
for(i=0;i<60;i++) {
pnl_temp = ptr_for_handle(pnl_array[i]);
pnl_temp.pos_x = random(screen_size.x);
pnl_temp.pos_y = random(screen_size.y);
}
wait(1);
}
}
post scriptum: Dieses Mal funktioniert der Code.
Last edited by Superku; 03/08/10 23:20.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
Re: Objekte plazieren
[Re: Superku]
#314514
03/09/10 00:31
03/09/10 00:31
|
Joined: Mar 2010
Posts: 7
dalco
OP
Newbie
|
OP
Newbie
Joined: Mar 2010
Posts: 7
|
dank dir ich komme weiter  mein bisheriger code, platziert den spielball und von dir die 60 zufälligen steine, warum in der main? wäre es nicht besser sie ausserhalb zu schreiben, sie müssen auch festgelegt werden und sollten eben auch wie zuvor beschrieben verschiedene grafiken haben und einen status zb int-wert anhand dem sie erkannt werden ob zb sie 1 oder 2x getroffen werden müssen. ziel: ein gaaaanz altes 64-game , der ball fliegt rauf/runter, ich steuer ihn nur recht/links, hab ich schon gemacht.... und in der methode kollision sollten doch nun auch vielleicht mittels for-schleife alle 60 steine getestet werden, eben ob mein ball abprallt => sprich richtung ändert sich oder zb ob ich kaputt gehe, will sagen, hier müsste der status getestet werden und ggf das bild des steins geändert werden. in den auskommentierten zeilen hab ich getestet, für einen festen teststein hats geklappt hier der code ---------------------------------------- #include <acknex.h> // definiert pure mode, steht normalerweise immer am Anfang #include <default.c>
PANEL* ball_pan = { bmap = "ball.jpg"; layer = 11; pos_x = 500; pos_y = 200; flags = SHOW; }
VECTOR ball_speed;
function kollision() { ball_pan.pos_x += 7*ball_speed.x*time_step; ball_pan.pos_y += 7*ball_speed.y*time_step; // check if hit a border or a paddle if (ball_pan.pos_y > 760) // lower border { ball_speed.y = -5; } else if (ball_pan.pos_y < 0) // upper border { ball_speed.y = 5; }
// else if((ball_pan.pos_y<right_pan.pos_y+50) && (ball_pan.pos_y>right_pan.pos_y+45) && (ball_pan.pos_x+50>right_pan.pos_x) && (ball_pan.pos_x<right_pan.pos_x+51)) { // ball_speed.y = 5; // // } }
///////////////////////////////////////////////////////////////////// function main() { video_mode = 7; // 800x600; screen_color.blue = 111; // hintergrundfarbe
PANEL* pnl_temp; var pnl_array[60],i;
fps_max = 60; video_mode = 11; for(i=0;i<60;i++) { pnl_temp = pan_create("bmap = ball.bmp; flags = SHOW;",11); pnl_array[i] = handle(pnl_temp); }
for(i=0;i<60;i++) { pnl_temp = ptr_for_handle(pnl_array[i]); pnl_temp.pos_x = random(screen_size.x); pnl_temp.pos_y = random(screen_size.y); } ball_speed.x = 0; ball_speed.y = 5; while (1) { if (key_m) ball_speed.x = 2; else if(key_v) ball_speed.x = -2; else ball_speed.x=0; kollision(); wait (2); } if (key_esc) { sys_exit(NULL); } }
vielleicht kannst du mir ja helfen, wäre schön wenn ich ein komplettes beispiel zusammenbekommen würde für den anfang und weitere versuche. danke nochmal gruss tino
Last edited by dalco; 03/09/10 00:33.
|
|
|
Re: Objekte plazieren
[Re: dalco]
#314671
03/09/10 23:44
03/09/10 23:44
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
Mal eine generellere Antwort:
Du denkst nicht von der Engine her, deshalb kannst Du nicht ihre Vorteile nutzen. Wofür brauchst Du eine Engine, wenn Du eh das Ganze in Deinem Code komplett neu aufbaust?
2D ist nicht die Stärke dieser 3D-Engine.
Das, wonach Du fragst, klingt nach dem, was die Engine als Entites anbietet, aber eben nur im Level - also 3D (in dem Du, wenn Dir besonders daran liegt, weil Du vielleicht einen speziellen 2D-Stil erreichen möchtest, auch 2D 'simulieren' kannst). Entities haben neben Standardparametern sogenannte Skills, in denen Status, ID, Nachbarn und weitere Eigenschaften individuell gespeichert werden können. Die Entities können per ent_create über das Skript ins Level gesetzt werden oder über den WED (World Editor), indem sie dort als Models oder Sprites auf dem Grid positioniert werden.
Hast Du die Workshops mal durchgeschaut? Ich meine, nicht um das Programmieren zu lernen, sondern um zu sehen, welche Herangehensweisen sich bei ihrer speziellen Konstruktion und der von ihr zur Verfügung gestellten Funktionen und Strukturen anbieten.
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|