fenix für den gp2x...


Status
Not open for further replies.

sechsrad

Member
Joined
Feb 22, 2008
Messages
266
hallo, ich möchte mal eine einweisung mit fenix anfangen.
meine erzielten ergebnisse damit (für den gp2x und windows) sind sehr zufriedenstellend und ohne frust abgelaufen.
bastlele damit seit ca 3 wochen herum. mein ziel ist es, den gp2x damit zu programmieren

ich habe vorher dev-c++ ausprobiert und glbasic. konnten nicht so überzeugen, fenix hat gewonnen.

ich benutze das "fenixpack2.7.1.exe" und das dazugehörige "ufenix-v0.2.zip".
es gibt für dieses fenix-pack schon eine erweiterung "tool.rar". damit wird der "flamebird 0.53" auf 0.55 verbessert und noch ein tilesettool ist im ordner "fenix/tool" dazugekommen.

wenn dieses tool.rar aber installiert wird, dann ist das fenixcompilat für den gp2x nicht mehr compatibel zu dem "ufenix", welches ja für das fenixpack2.7.1 erstellt wurde, also tool.rar erst installieren , wenn es das dazugehörige ufenix für den gp2x gibt.

zuerst habe ich das fenixpack2.7.1.exe auf dem laufwerk "c" installiert.
dann habe ich die ufenix-v0.2.zip entpackt und auf dem gpx2 bzw die sd-karte gebracht.

habe dann mal alle demo-programme durchgespielt auf dem gp2x, die dort im ufenix-ordner angeboten waren.
alle programme funktionierten wunderbar. die geschwindigkeit und die grafik ist berauschend.

dann habe ich alle dateien/ordner im verzeichnis ufenix gelöscht und habe nur den ordner runtime stehen lassen. ich wollte ja von vorn anfangen.

dann ging es mit fenix los.
fenix ist eine sprache , die speziell für 2d geschaffen wurde , man spricht auch von 2,5d, es sind schöne beispielprogramme vorhanden im ordner "fenix/examples". 2,5d deshalb, weil dort 3d-programme vorhanden sind, die nicht mit opengl-erschaffen worden sind sondern nur mit der eigentlichen rechner-cpu und deren power. ist jetzt auch verständlich, warum alle 3d-programme von fenix auch auf dem gp2x laufen.
die sprachsyntax ist an basic angelehnt und ist schnell erlernbar. est gibt jetzt hier ein wesentliche unterschied zu anderen sprachen. alle proceduren laufen als taske die immer mit "frame" enden. frame unterbricht den task und stellt dann auch das bild her auf dem bildschirm. diesem frame kann man nach belieben sogenannte taskzeiten zuweisen zb "frame 25".
diese bestimmen dann den spielablauf/geschwindigkeit für die sogenannten proceduren.

das heisst, wenn die fenixsprache loslegt, gibt es keine vergeudung von sogenannten bummelzeiten von sleeps und wait zb.
es läuft alles in einer multitasting zeitscheibe ab, die sich immer dreht. das macht das fenix so schnell.

und jetzt kommt das wesentliche für den gp2x. was ist das? es sind die 2 cpu's im gp2x , die für diese taskarbeit passen, wie der arsch auf dem eimer...also eine 100%tige sache, was besseres kann man sich als spielgerät garnicht vorstellen.
und dieses fenixprogramm mit dem linux auf dem gp2x und die 2 cpu sind der renner.

es gibt zur zeit kein zweites programmierprogramm, welche diese cpu-arbeit für die beiden cpu im gp2x optimal nutzt mit der zusammenarbeit von linux.

das war auch mit der grund, eine einfache sprache zu erlernen, die mit dem gp2x spielend umgehen kann.

so jetzt gehts weiter.
hier gibt es das fenixpack und auch doc-dateien : http://fenixpack.blogspot.com/
die demos usw brauchen nicht runtergeladen werden, weil das fenixpack in sich eine gute komplette sache bietet.
und hier gibt es das ufenix für den gp2x : http://archive.gp2x.de/quickview/index.php

die doc-dateien sollte man ruhig mal überfliegen, sind teilweise in englisch und in spanisch.
die vielen guten bildlichen erklärungen sprechen für sich und sind sehr gut gemacht.

in einer doc-datei ist die sprachsyntax erklärt mit beispielen und vor allem mit dem sample-programmem im fenix-ordner sollte man fleissig experiemente machen.

wer lusten hat, kann ja dann hier auch seine kleinen erfahrungen und programme hier reinstellen, nur so kann man austauschen.

wichtig ist, das man sich mit den befehlen auseinandersetzt und evtl neue kreationen damit erschafft. man kann nicht alles auf einmal lernen.
der weg ist das ziel für unser hobby.

als erste habe ich mir als übung mal diese programme aus der doc umgesetzt und auf dem gp2x zum laufen gebracht :

1.programm
Code:
<i>
</i>
program hallo;

begin
x=0;
while(x< 320)
	delete_text(0);
	x+=2;
	write(0,x,100,1,"hallo es geht !" );
	frame;
end;
end;

2. programm
Code:
<i>
</i>
program hallo;

begin
x=0;
write(0,0,100,1,"hallo es geht !" );
while(x< 320)
	x+=2;
	move_text(1,x,100);
	frame;
end;
end;

3. programm
Code:
<i>
</i>
program hallo;

begin
x=0;
write(0,0,100,1,"hallo es geht !" );
set_text_color(25);
write(0,250,10,1,"gp2x !" );
while(x< 320)
	x+=1;
	move_text(1,x,100);
	frame 20;
end;
end;

und hier das 4. programm, die erste einfache collision.
beachtet die tastenbedienung für den gp2x, die kann man immer wieder woanders verwenden,
für die 4 richtungstasten reichen "_left" usw. , ohne die umsetzung __A usw.

beachtet hier mal den "PROCESS colli(x,y,graph);", der nur einmal gestartet wird und dann seine arbeit pflichtgemäss macht. das sind die prozesse. wichtig ist auch der befehl "frame" in jedem prozess.
Code:
<i>
</i>program bewegung;

global
gr_ball;
gr_ball_1;   

__A = _control;
__B = _alt;
__SELECT = _space;
__START = _enter;
__R = _tab;
__L = _backspace;

begin

set_title("ball");
full_screen = false;
set_mode(m320x240);

gr_ball = new_map(20,20,8);
map_clear(0,gr_ball,25);  

gr_ball_1 = new_map(30,30,8);
map_clear(0,gr_ball_1,12);  

ball();
colli(80,40,gr_ball_1);

loop      
	frame;
	if(key(_control)) break; end
end
let_me_alone();
end

Process ball()
begin  

x = 160;
y = 120;

graph = gr_ball;

loop 
    if(key(_left))	x -=2; end
	if(key(_right)) x +=2; end
	if(key(_up))	y -=2; end
    if(key(_down))	y +=2; end   
    
  	//if(key(_left))	angle+=5000; end
	//if(key(_right)) angle-=5000; end
	//if(key(_up))	advance(5); end 
	
	graph = gr_ball; 
	delete_text(all_text);
  	frame;
end
end 

PROCESS colli(x,y,graph);
PRIVATE
int hit; 

BEGIN;
LOOP
	hit=COLLISION(TYPE ball); 
	IF (hit<>0 and graph==gr_ball_1) 
		WRITE(0,150,50,0,"peng.."); 	
	END
	FRAME 5; 
END 
END

diese programme oben werden als prg abgespeicher und mit fenix compiliert zu einem dcb-programm.
in dem ordner ufenix auf der sd-karte estellen wir noch einen ordner, wo diese dcb-dateine reinkommen.
dann estellen wir das gpe-programm welches vom gp2x gestartet wird und dann das dcb-programm startet in dem unterordner "spiele" oder "kursus" zb.
diese datei heisst dann zb "program1.gpe" und startet dann das "program1.dcb" im ordner "kursus , die namensvergebung
sollte übersichtlich erfolgen :
#!/bin/sh
cd runtime
./ufxi ../kursus/program1.dcb
cd /usr/gp2x
exec /usr/gp2x/gp2xmenu

ich werde noch weitere kleine programme hier reinstellen, die teilweise aus der bescheibung gewachsen sind oder aus dem samples. wenn es andere auch so machen möchten, dann wächs dieses gebäude sehr schnell.
ich mache deshalb erstmal kleine progrämmchen, um die vielfalt der befehle zu ergründen und deren zusammenspiel.

mfg
 
hier noch ein einfaches linienzeichnen aus dem internet, mit den richtungstasten steuern.
Code:
<i>
</i>program line;
private
  drawn;
  fix_x=0;
  fix_y=0;
 
begin
  set_mode(320,240,16);  
      
  x=10; y=10;
  loop        
    if(key(_up))y--;end;
    if(key(_down))y++;end;
    if(key(_left))x--;end;
    if(key(_right))x++;end;
   
    delete_draw(drawn);
    drawing_color(rgb(255,255,0));
    draw_line(fix_x,fix_y,x,y);
    frame;
	if(key(_control)) break; end
  end
let_me_alone();
end
 
und jetzt kommt das wesentliche für den gp2x. was ist das? es sind die 2 cpu's im gp2x , der für diese taskarbeit passt, wie der arsch auf dem eimer...also eine 100%tige sache, was besseres kann man sich als spielgerät garnicht vorstellen.
und dieses fenixprogramm mit dem linux auf dem gp2x und die 2 cpu sind der renner.

es gibt zur zeit kein zweites programmierprogramm, welche diese cpu-arbeit für die beiden cpu im gp2x optimal nutzt mit der zusammenarbeit von linux.
Das ist Blödsinn:
Fenix verteilt die Tasks nicht auf die 2 Prozessoren (was AFAIK auch unmöglich ist), lediglich Ultimate Fenix nutzt die 2. CPU für optimierte Routinen (jedoch noch nicht mit diesem Release).
glbasic macht es nicht, sdlbasic macht es nicht dev-c++ macht es nicht usw.
ist ja auch klar, diese programmiersprachen wurden für single-cpu geschaffen.
Es ist NICHT die Aufgabe der Programmiersprache/des Compilers die 2. CPU zu nutzen, sondern die des Programmierers. Außerdem ist Fenix eine interpretierte Sprache und somit viiel langsamer als C++ und GLBasic (welches auf C++ aufsetzt).
das war auch mit der grund, eine einfache sprache zu erlernen, die mit den 2 cpu umgehen kann auf der console.
Das sehe somit nur noch als reine Ironie.

mfg Isoc
 
ich habe meinem spass mit fenix und das resultat sieht man hier.
progge erst sehr kurze zeit damit.

mfg
 
Hmmm, verwirrt bin.

Du redest einerseits von spritecollision und dann wieder von Vectorgrafiken/körper.

Sind das nicht Birnen und Äpfel zum Birpfel gemischt?

Kann mich auch täuschen.
 
ein neues program !
es wird in der "new_map(breite,höhe,farbtiefe)" eine neue grafik erstellt. diese wird mit der id-nr mapa1 angesprochen. es ist ein rechteck, welche in die mitte gesetzt wird. im process wird es mit den tasten nach links und rechts geschoben auf der x-achse und mit den tasten auf und ab auf der y-achse verschoben.
Code:
<i>
</i>PROGRAM map;   
global
  mapa1;

BEGIN
FULL_SCREEN=false;  

mapa1=new_map(80,80,8); 
drawing_map(0,mapa1); 
drawing_color(rgb(255,0,0));
draw_box(20,20,60,60); 

zeichne(); 

loop      
	frame;
	if(key(_control)) break; end 
end
let_me_alone();
END   

Process zeichne()
begin  

x = 160;
y = 120;
graph = mapa1;

loop 
    if(key(_up)) y-=1;end;
    if(key(_down))y+=1;end;  
    if(key(_left))x-=1;end;
    if(key(_right))x+=1;end;
  	frame;
end
end
 
eine einfache collison mit einfachen grafiken auf der new_map, 3 kreise und ein dreieck.
das dreieck steuert man mit: left, right und up.
wenn man die kreise berührt kommt der text "peng.." und das dreieck fährt einpaar punkte zurück.
es ist einfach klasse, wie man auf dem gp2x so einfach spiele produzieren kann.

bastelt da mal mit rum, ändert mal die variablen usw.
dadurch habe ich das auch gelernt. es mach einfach spass.

natürlich ist diese leistung der grafik hier nur ein bruchteil was man mit fenix produzieren kann.

mfg

Code:
<i>
</i>program colli1;

global
gr_circle0;  
gr_circle1;  
gr_circle2;  
gr_circle3;
gr_dreieck;   
test;  

__A = _control;
__B = _alt;
__SELECT = _space;
__START = _enter;
__R = _tab;
__L = _backspace;

begin

full_screen = false;
set_mode(m320x240);

gr_dreieck = new_map(30,30,8);
drawing_map(0,gr_dreieck); 
drawing_color(rgb(255,255,0));
draw_triangle(1,1,1,29,29,15); 

gr_circle0 = new_map(40,40,8);
drawing_map(0,gr_circle0); 
drawing_color(rgb(255,0,0));
draw_circle(20,20,19); 

gr_circle1 = new_map(40,40,8);
drawing_map(0,gr_circle1); 
drawing_color(rgb(0,255,0));
draw_circle(20,20,19); 

gr_circle2 = new_map(40,40,8);
drawing_map(0,gr_circle2); 
drawing_color(rgb(0,0,255));
draw_circle(20,20,19);  

gr_circle3 = new_map(40,40,8);
drawing_map(0,gr_circle3); 
drawing_color(rgb(0,0,255));
draw_circle(20,20,19);     
   
box(); 
colli(80,40,gr_circle0); 
colli(160,90,gr_circle1);   
colli(20,170,gr_circle2); 
colli(250,150,gr_circle3);

loop      
	frame;
	if(key(_control)) break; end
end
let_me_alone();
end

PROCESS draw_triangle(x1,y1,x2,y2,x3,y3);
BEGIN
draw_line(x1,y1,x2,y2);
draw_line(x2,y2,x3,y3);
draw_line(x3,y3,x1,y1);
END  

Process box()
begin  

x = 160;
y = 150;
angle=0;
graph = gr_dreieck;
test=0;
loop 
    //if(key(_left))	x -=2; end
	//if(key(_right)) x +=2; end
	//if(key(_up))	y -=2; end
    //if(key(_down))	y +=2; end   
     
  	if(key(_left))	angle+=5000; end
	if(key(_right)) angle-=5000; end
	if(key(_up))	advance(2); end 
	if (test==1) 
		advance(-7);
		test=0;
	end		
	graph = gr_dreieck; 
	delete_text(all_text);
  	frame;
end
end 

PROCESS colli(x,y,graph);
PRIVATE
int hit; 

BEGIN;
LOOP
	hit=COLLISION(TYPE box); 
	IF (hit<>0 and graph==gr_circle0) 
		WRITE(0,80,40,0,"peng.."); 
		test=1; 
	END 
	IF (hit<>0 and graph==gr_circle1) 
		WRITE(0,160,90,0,"peng.."); 
		test=1; 
	END 
	IF (hit<>0 and graph==gr_circle2) 
		WRITE(0,20,170,0,"peng.."); 
		test=1; 
	END  
	IF (hit<>0 and graph==gr_circle3) 
		WRITE(0,250,150,0,"peng.."); 
		test=1; 
	END 
	
	FRAME; 
END 
END
 
ein aufbereiteter leckerbissen.
der rote kreis geht alleine zum grünen kreis.
mit up und down kann die suche schneller gemacht werden(rote kreis wird beschleunigt). der grüne kreis wird nach dem berühren vom roten kreis auf eine neue zufallsposition gesetzt.
Code:
<i>
</i>program suche_finde;
global
  dist=1;
  ang;
  IDB; 
  gr_circle0;
  gr_circle1;
begin   

gr_circle0 = new_map(40,40,8);
map_clear(0,gr_circle0,0);
drawing_map(0,gr_circle0); 
drawing_color(rgb(255,0,0));
draw_circle(20,20,19); 

gr_circle1 = new_map(40,40,8);
map_clear(0,gr_circle1,0);
drawing_map(0,gr_circle1); 
drawing_color(rgb(0,255,0));
draw_circle(20,20,19);  

  IDB=zeichne();
  graph=gr_circle0;
  x=160;
  y=100;
  repeat
    if(key(_up)   && dist<10>1)  dist--; end
    if(collision(type zeichne))
      IDB.x=rand(0,299);
      IDB.y=rand(0,199);
    end
    ang=fget_angle(x,y,IDB.x,IDB.y);
    xadvance(ang,dist);
    frame;
  until(key(_control))
  exit("",0);
end

process zeichne()
begin
  graph=gr_circle1 ;
  x=rand(0,299);
  y=rand(0,199);
  loop
    frame;
  end
end
 
mit den tasten up,down,left,right kann man den roten kreis durch die gegend steuern und das gelbe dreieck läuft von alleine hinterher, bis es sich in unmittelbarer nähe vom kreis befindet.

so einfach ist es objekte ausfindig zu machen.

es wird immer schöner...hm...toll.

die doc-hilfedateien im fenix-ordener sind sehr hilfreich, auch wenn sie in spanisch und teilweise in englisch geschrieben sind.

durch kleine programme bekommt man die übung und dann eines tages kann man grosse programme schreiben.
Code:
<i>
</i>program verfolge; 

global
  	fpg;
  	ang;
	gr_circle0;  
	gr_dreieck; 
	x1;
	y1; 
	  
begin
  	full_screen=false;
    set_mode(m320x240);   
    
  	gr_dreieck = new_map(30,30,8);
	map_clear(0,gr_dreieck,0);
	drawing_map(0,gr_dreieck); 
	drawing_color(rgb(255,255,0));
	draw_triangle(1,1,1,29,29,15); 

	gr_circle0 = new_map(40,40,8);
	map_clear(0,gr_circle0,0);
	drawing_map(0,gr_circle0); 
	drawing_color(rgb(255,0,0));
	draw_circle(20,20,19); 
  	
  	zeichne();
  	graph=gr_dreieck;  
  	
  repeat
    ang=fget_angle(x,y,x1,y1);
    angle=near_angle(angle,ang,10000);
    advance(1);
    frame;
  until(key(_control));
 let_me_alone();
end  

PROCESS draw_triangle(x1,y1,x2,y2,x3,y3);
BEGIN
draw_line(x1,y1,x2,y2);
draw_line(x2,y2,x3,y3);
draw_line(x3,y3,x1,y1);
END  

Process zeichne()

begin  
x = 160;
y = 150;
graph = gr_circle0;

loop 
   if(key(_left))	x -=4; end
	if(key(_right)) x +=4; end
	if(key(_up))	y -=4; end
    if(key(_down))	y +=4; end   
    x1=x;
    y1=y; 
	graph = gr_circle0; 
  	frame;
end
end
 
von 2 kreisen , wovon der eine mit den tasten up,down,left und right bewegt werden kann, wird der abstand ermittelt und der winkel zueinander. was wollen wir mehr?

eine schnellere positionsermittlung gibt es für den gp2x zur zeit nicht.

mfg
Code:
<i>
</i>program dis_ang;
global
  dist; 
  ang;
  idb;
  gr_circle0;
	gr_circle1; 
	 
begin
  full_screen=false;  
  
  gr_circle1 = new_map(40,40,8);
  map_clear(0,gr_circle1,0);
  drawing_map(0,gr_circle1); 
  drawing_color(rgb(255,255,0));
  draw_fcircle(20,20,10);  

  gr_circle0 = new_map(40,40,8);
  map_clear(0,gr_circle0,0);
  drawing_map(0,gr_circle0); 
  drawing_color(rgb(255,0,0));
  draw_fcircle(20,20,10); 
  
  write_int(0,10,10,3,&dist); 
  write_int(0,10,20,3,&ang);
 
  idb=kreis();
  graph= gr_circle1;
  x=160;
  y=50;  
  
  repeat
    dist=get_dist(idb)-20;
    ang=get_angle(idb);  
    
    if (ang<0)  ang=(270000+(90000+ang));end  
    ang=ang/1000;
    if(key(_left))	x -=2; end
	  if(key(_right)) x +=2; end
	  if(key(_up))		y -=2; end
    if(key(_down))	y +=2; end   
    frame;
  until(key(_control))
  exit("",0);
end

process kreis()
begin
  graph=gr_circle0;
  x=160;
  y=120;
  loop
    frame;
  end
end
 
1. das ist dein Post von mir, nicht ein Thread(nimm keine Worte in den Mund, deren Bedeutung du nicht kennst!)!
2. den frieden hier hast du angefangen zu stören ;), kenn da einen den hast du irgendwie mit Pflegel usw beschimpft.... nur mal so nebenbei...
 
wie werden nun die bilder im format "png und pcx " reingeladen.

die erste methode ist, das bild direkt mit dem ladebefehl zuladen :
load_png("test.png") oder load_pcx("test.pcx")

wenn man aber eine bildserie braucht für animation dann ist es ein bisschen umständlich.

dafür wird jetzt das archiv-format "fpg" genommen. in diesem archiv werden die bilder aufgenommen
und automatisch werden nummern vergeben.

dieses tool dafür ist im verzeichnis "fenix/fpg_edit/" und heisst fpgfedit.exe.
mal damit üben.

dieser "fpg-container" wird dann so geladen : load_fpg("test.fpg").
wenn ich ein bild brauche im prozess, dann wird es einfach geladen : graph=1 usw.aus dem fpg-container.

natürlich brauchen hier nicht nur bildserien drin sein, es können auch hintergrundbilder sein .
diese hintergrundbilder werden so geladen : put_screen(bild,2).
hier wird das bild mit der nr. 2 aus dem test.fpg herausgenommen und als hintergrund genommen.
die variable "bild" im ladebefehl wird so erstellt : bild=load_fpg("test.fpg").
manche befehle müssen die ide des containers haben als ident-nr.

bei bildern mit einer transparents müssen die bilder im 24-bit-format als png vorliegen und mit dem
grafikprogramm muss ein layer als transparent gesetzt werden. ich benutze paint-shop-pro dafür.
die bilder die dann transparent sind bekommen im fpg-ordner automatisch einen hellblauen hintergrund.

so jetzt spiele ich wieder weiter , übung macht den meister.
 
hier ein brakspiel aus dem archiv von fenix.
die grafikbilder für die aktion ,die normal aus der fpg-datei geladen werden ,habe ich hier mal durch eine selbserstellte liniengrafik ersetzt und ausgefüllt.
man sieht hier : gr_paddle = new_map(40,10,8), wie eine grundfläche für das paddle hergestellt wird, reserviert und dann weiter im programm drauf gezeichnet. man kann alle grafikfehle dort anwenden. auch verändern dieser grafikfläche dynamisch während des spieles ist möglich, also gute tricks kann man dann herstellen oder auch animationen.
der globale name "gr_paddle" ist dann für die darstellung der grafik mit dem befehl "graph" nötig.

mal die doc-datei oder hilfe-datei von fenix nehmen und die befehle nach und nach durchgehen. so habe ich es gelernt.
Code:
<i>
</i>Program break_fest;
global 
	gr_paddle;
	gr_block;
	gr_ball;
	blocksleft;
private
	i;
	j;  
	
begin  

	full_screen = false;
	set_mode(m320x240);   
	
	gr_paddle = new_map(40,10,8);
	map_clear(0,gr_paddle,0);
	drawing_map(0,gr_paddle); 
	drawing_color(rgb(0,255,0));
	draw_box(1,1,39,8); 

	gr_block = new_map(40,15,8);
	map_clear(0,gr_block,0);
	drawing_map(0,gr_block); 
	drawing_color(rgb(255,255,0));
	draw_box(1,1,30,14); 

	gr_ball = new_map(16,16,8);
	map_clear(0,gr_ball,0);
	drawing_map(0,gr_ball); 
	drawing_color(rgb(255,0,0));
	draw_fcircle(8,8,6); 
	  
	paddle(160,220);
	ball(160,80);
	for(i=0;i<10;i++)
		for(j=0;j<3;j++)
			blocksleft++;
			block(i*32+20,j*16+8);
		end
	end
	write(0,180,230,5,"bloecke : ");
	write_int(0,180,230,3,&blocksleft);
	loop
		frame;
		if(key(_control))
			while(key(_control))frame;end
			ball(160,80);
		end;
	end;
end; 

process paddle(x,y)
begin
	graph=gr_paddle;
	loop
		if(key(_left))x-=5;end
		if(key(_right))x+=5;end
		if(x<15>305)x=305;end
		frame;
	end;
end; 

process ball(x,y)
private
	vx=0;
	vy=4;
	idpaddle;
	idblock;  
	
begin
	graph=gr_ball;
	loop
		idpaddle=COLLISION(type paddle);
		idblock=COLLISION(type block);
		if(idblock!=0)
			if(abs(idblock.y-y+vy)>8)
				vy=-vy;
			end
			if(abs(idblock.x-x+vx)>16)
				vx=-vx;
			end
			while(idblock!=0)
				blocksleft--;
				signal(idblock,s_kill);
				idblock=COLLISION(type block);
			end
		end
		if(x<2>=318)vx=-vx;end
		if(y<2>20)vx=20;end
		x+=vx;
		y+=vy;
		if(y>260)return;end
		frame;
	end;
end;  

process block(x,y);  
begin;  
	graph=gr_block;
	loop
		frame;
	end
end
 
Oooookay, ich kann net anders als hier auch meinen Senf zu abzugeben, in nicht festgelegter Reihenfolge XD

1. Frame in Verbindung mit einem Integer lässt einen Process eine bestimmte Anzahl an Frames pausieren, es sollte NICHT dazu dienen,
das ganze Spiel langsamer zu machen:

2. dazu gibt es set_fps:
set_fps( <anzahl_bilder_pro_sekunde>, <frameskip> );

3. bitte bitte benutze set_mode( 320, 240, 16 ); für den gp2x,
damit die Auflösung auch voll ausgenutzt ist.

4. es sind auch keine 3D Programme vorhanden, Fenix unterstützt einzig und allein Mode/, was an sich schrott ist, man kann Mode7 als 2.5D Bezeichnen aber nicht Fenix!

5. Dev-CPP ist keine Programmiersprache!

6. Multitaskingzeitscheibe o_O Fenix läuft komplett prozedural ab, und ist nicht mal Multithreaded! Wenn mehrere Prozesse laufen, laufen die Hintereinander ab.

7. Das mit der 2. CPU wurde ja schon gesagt, ich frag mich überhaupt wie man drauf kommt, das zu behaupten o_O

8. Code-Formatierung!!!

9. Ich *HOFFE* du kannst englisch, wenn ja: ttp://www.fenixdocs.com BITTE BITTE NACHLESEN!!! DIE WIKI IST WICHTIG!

10. Warum kopierst du den Code von meinem uralten (sehr schlechten) Linienzeichnen hier rein? Unnütz (jaja ich weiß, ich habs gemacht) und kommt mir vor wie Spam.

11. Oh jeeeee.

12. Ich wünsch dir viel Glück beim Fenix-Lernen, auf dass es besser wird!
(Ich verweise hier nochmal auf die WIKI (s.o.)

Kleine Zusammenfassung:
Bevor du alle möglichen neuen Fenix-er verwirrst, mach dir erst mal klar, dass das was du hier schreibst, richtig ist!
Mein Hauptgedanke beim durchlesen war "OMG! OMG! ZOMG! OMG!"
 
Mein Alzheimer-Gedächtniss ist wirklich nicht das Beste aber ich war mir fast sicher, hier nen Post reingestellt zu haben der nun auf unerklärliche Weise verschwunden ist. -_-
Und zwar fragte ich, ob es wahr ist, das Fenix auf dem GP2X standardmäßig immer übertaktet läuft, wie ich mal gelesen hatte. True? False? Ihr Experten hier könnt das sicher leicht beantworten. ^_^
 
Status
Not open for further replies.
Back
Top