Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-12-2001, 19:08   #1 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
iso-game-engine

[juhu, der bvb hat gewonnen!!!]

so, da johannes p. so klasse mit seiner pacman-engine vorgelegt hat, mußte ich heute unbedingt eine iso-game-engine basteln.

habe mich auch von johannes inpirieren lassen und wie ihr sehen werdet, ist die map dieselbe.

so, nun die scripte, da mußte ich schon ein wenig überlegen. die iso-darstellung verlangte eine etwas andere herangehensweise.

der boden ist zunächst einmal eine einzelne kachel.

hier die map:

PHP-Code:
movieclip.prototype.iso_nums =function (mcidwhxPosyPos) {
    for (var 
0x<rows.lengthx++) {
        for (var 
0y<rows[x].lengthy++) {
            if (
rows[x][y] == 0) {
            
n++;
            }else{
            
n++;
            
attachMovie(mcidmcid+nn);
            
this[mcid+n]._x xPos+(y-x)*w/2;
            
this[mcid+n]._y yPos+(x+y)*h/2;
            
this[mcid+n].num n;
            
            }
        }
    }

<edit>
da habe ich ja glatt was vergessen, nämlich die map, sie wird in einem mc namens "tiles" generiert:

PHP-Code:
onClipEvent (load) {
    
rows = new Array();
    
rows[0] = [1111111111];
    
rows[1] = [1000100001];
    
rows[2] = [1010110101];
    
rows[3] = [1010000001];
    
rows[4] = [1010111101];
    
rows[5] = [1000011001];
    
rows[6] = [1111000011];
    
rows[7] = [1011011011];
    
rows[8] = [1000000001];
    
rows[9] = [1111111111];
    
iso_nums("tile"4020275130);

</edit>

den player habe ich manuell unten links in der ecke positioniert (tile 82)

PHP-Code:
onClipEvent (load) {
    
this.swapDepths(1000);
    
posX=_parent.tiles.tile81._x+(_width/2);
    
posY=_parent.tiles.tile81._y+(_height/2);
    
_x=posX;
    
_y=posY;
    
tile=82;



hier nun die steuermethode:

PHP-Code:
// Spielfigur bewegen
movieclip.prototype.movePlayer = function () {
    var 
pressed Key.getCode();
    
// Nach links
    
if (pressed == 37) {
        if(!
_parent.tiles["tile"+(tile-1)]){
        
posX_x +(_width/2)*-1;
        
posY_y +(_height/2)*-1;    
         
_x =posX;
        
_y =posY;
        
tile--;
        }
     }
    
// Nach oben
    
if (pressed == 38) {
        if(!
_parent.tiles["tile"+(tile-10)]){
        
posX_x +(_width/2);
        
posY_y +(_height/2)*-1;    
         
_x =posX;
        
_y =posY;
        
tile -=10;
        }
     }    
    
// Nach rechts
    
if (pressed == 39) {
        if(!
_parent.tiles["tile"+(tile+1)]){
        
posX_x +(_width/2);
        
posY_y +(_height/2);    
         
_x =posX;
        
_y =posY;
        
tile++;
        }
    }        
    
// Nach unten
    
if (pressed == 40) {
        if(!
_parent.tiles["tile"+(tile+10)]){
        
posX_x +(_width/2)*-1;
        
posY_y +(_height/2);    
         
_x =posX;
        
_y =posY;
        
tile +=10;
        }
         
    }

die der player natürlich ausführt:

PHP-Code:
onClipEvent (keyDown) {
    
movePlayer(step);

da mußte ich meine grauen zellen ganz schön arbeiten lassen.

ansehen

download

...und natürlich dicke props an johannes und matze!

grüße, dassoud
__________________

33rpm

Geändert von dassoud (01-12-2001 um 20:07 Uhr)
dassoud ist offline   Mit Zitat antworten
Alt 01-12-2001, 19:22   #2 (permalink)
auferstanden
 
Benutzerbild von Johannes P.
 
Registriert seit: Sep 2001
Ort: München
Beiträge: 5.247
Thumbs up

Super Arbeit!! Werde mich morgen damit mal beschäftigen.
__________________

Gruß
Johannes
¬ Homepage
¬ Tutorials und FAQs Forum
¬ Suchen und Finden
Johannes P. ist offline   Mit Zitat antworten
Alt 01-12-2001, 19:41   #3 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
dankeschön!

bei der spielfigur habe ich übrigens ein bißchen geschummelt:

da sie kleiner als die iso-kacheln sein sollte, habe ich einen naja, nicht wirklich ganz tranzparenten linien-rand drumherum gelassen.

aber iso ist schon faszinierend!

grüße, dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 01-12-2001, 21:03   #4 (permalink)
BenutzerID: 436
 
Benutzerbild von Sebastian S.
 
Registriert seit: Jun 2001
Ort: Ruhrgebiet
Beiträge: 2.333
Thumbs up

wenn ich mir das script so angucke, dann weiß ich warum ich das vorhin nicht hinbekommen hab....


sieht fein aus...

[edit: bvb hat gewonnen und ist jetzt 2., ist mir aber ziemlich egal...]
__________________
Sebastian S. ist offline   Mit Zitat antworten
Alt 01-12-2001, 23:55   #5 (permalink)
echt?
 
Registriert seit: Jun 2001
Ort: the future
Beiträge: 176
yeah, das is ja echt geil! respekt@dassoud und vor allem denen, die sich überhaupt mit oop beschäftigen... finde das super!

da ich noch totaler newbie bin, was so oop angeht, weiß ich leider nicht die bedeutungen von prototype (funktionen??) und iso (unveränderte version v. programmen?)

wäre jemand so net diese vielleicht etwas dümmliche frage mir zu erlautern? thx!

greetz
MaStA*BlAsTa
MaStA*BlAsTa ist offline   Mit Zitat antworten
Alt 02-12-2001, 01:31   #6 (permalink)
zeitreisender
 
Benutzerbild von emax
 
Registriert seit: Aug 2001
Ort: Hannover
Beiträge: 1.577
versuch gescheitert

so, inspiriert von dem ganzen hier wollte ich eine "ghost"-engine schreiben ..schließlich muss pacman ja was zum weglaufen haben

die suche des zufallwegs klappt, nur bin ich aber daran gescheitert, als ich verhindern wollte daß der ghost nicht ohne grund seinen weg 180° dreht. das sollte er nur machen wenn er in eine sackgasse kommt. denn ohne ist die bewegung sehr hektisch.
naja sehts euch an, ich habs fast aufgegeben

shit, ich merke gerade daß ich aus frust diese 180° abfrage nicht abgespeichert hab.

ansehen

downloaden

hier die beiden funktionen:
PHP-Code:
// ghost bewegen
movieclip.prototype.moveGhost = function (direction) {

    
// Nach links
    
if (direction == 0) {
        
posX_x +(_width/2)*-1;
        
posY_y +(_height/2)*-1;    
         
_x =posX;
        
_y =posY;
        
tile--;
     }
    
// Nach oben
    
if (direction == 2) {
        
posX_x +(_width/2);
        
posY_y +(_height/2)*-1;    
         
_x =posX;
        
_y =posY;
        
tile -=10;
     }    
    
// Nach rechts
    
if (direction == 1) {
        
posX_x +(_width/2);
        
posY_y +(_height/2);    
         
_x =posX;
        
_y =posY;
        
tile++;
    }        
    
// Nach unten
    
if (direction == 3) {
        
posX_x +(_width/2)*-1;
        
posY_y +(_height/2);    
         
_x =posX;
        
_y =posY;
        
tile +=10;
    }
}

// bewegungsmöglichkeiten checken
movieclip.prototype.checkWay = function () {
    
        
ways= new Array();    
        
//links
        
if(!_parent.tiles["tile"+(tile-1)]){
        
ways.push(0);
        } 
        
//oben
        
if(!_parent.tiles["tile"+(tile-10)]){
        
ways.push(2);
        } 
        
//rechts
        
if(!_parent.tiles["tile"+(tile+1)]){
        
ways.push(1);
        } 
        
//unten
        
if(!_parent.tiles["tile"+(tile+10)]){
        
ways.push(3);
        } 
        
        
moveGhost(ways[random(ways.length)]);
         



@masta
iso kommt von isometrisch (iso felder sind diese pseudo 3d felder)

und wegen prototypes such schau dich doch mal im oop um da wurde schon viel dazu erklärt
PHP-Code:

__________________
Website: www.thomas-vogel.de

Geändert von emax (02-12-2001 um 01:38 Uhr)
emax ist offline   Mit Zitat antworten
Alt 02-12-2001, 02:10   #7 (permalink)
Achim²
 
Benutzerbild von JanG
 
Registriert seit: Aug 2001
Ort: Köln/Düsseldorf/Langenfeld
Beiträge: 2.787
Hut ab! Bin zwar kein fachmann, aber sieht schon sehr gelungen aus! Bin mal gespannt, wann das KOMPLETTE Spiel fertig ist!
Ihr puscht euch hier echt gegenseitig!

Peaze!

P.S. Sowas müsste im nächsten Adventskalender rein! Also, ein Jahr habt Ihr!
__________________
Achim-Allstars
...es ist alles Gold was glänzt!

0177GOERGEN
...klicken oder anrufen!
JanG ist offline   Mit Zitat antworten
Alt 02-12-2001, 08:08   #8 (permalink)
auferstanden
 
Benutzerbild von Johannes P.
 
Registriert seit: Sep 2001
Ort: München
Beiträge: 5.247
@emax: feine Sache, nur scheint der Ghost reichlich Kaffee intus zu haben
__________________

Gruß
Johannes
¬ Homepage
¬ Tutorials und FAQs Forum
¬ Suchen und Finden
Johannes P. ist offline   Mit Zitat antworten
Alt 02-12-2001, 10:33   #9 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Yup der Ghost ist leicht bedudelt

Aber sonst eine echt feine Sache !

mfg
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 02-12-2001, 11:03   #10 (permalink)
random
 
Registriert seit: Jun 2001
Beiträge: 834
Thumbs up

hauchdünner code (auf's nötigste reduziert!!!) mit heftigem resultat. das nenn' ich lean-coding. bin mal gespannt, wie das weitergeht ...
__________________
-------------------


ciao, blue
blue ist offline   Mit Zitat antworten
Alt 02-12-2001, 11:15   #11 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
klasse!

da schaue ich ein paar stunden später wieder hier vorbei und es hat sich einiges getan! das gefällt mir!

hihi, der ghost scheint echt ein wenig verwirrt zu sein

dürfte schwierig sein, ihm als spieler zu entkommen

wow, da scheint sich ja echt was draus zu entwickeln!

was auch noch fehlt, ist die "3. Pseudo-Dimension", die höhe von objekten. dann nach die tiefen richtig tauschen und der pseudo-iso-3d-eindruck sitzt!

finde auch, daß das alles schon recht kompakt gecodet ist!

grüße, dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 02-12-2001, 13:19   #12 (permalink)
zeitreisender
 
Benutzerbild von emax
 
Registriert seit: Aug 2001
Ort: Hannover
Beiträge: 1.577
nur meckern könnt ihr!

ich hab ja gesagt daß die bewegung derzeit rein zufällig ist.

ich wollte ja daß er nur in eine richtung läuft, wenn er an eine gabelung kommt zufällig abbiegt, aber nicht einfach so seine richtung 180° ändert, es sei denn er kommt in eine sackgasse.

nunja gestern wars ja auch schon spät, ich versuch das gleich nochmal
__________________
Website: www.thomas-vogel.de
emax ist offline   Mit Zitat antworten
Alt 02-12-2001, 13:21   #13 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
@emax

yupp, das ist aber auch ganz schön tricky!

grüße, dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 02-12-2001, 13:45   #14 (permalink)
zeitreisender
 
Benutzerbild von emax
 
Registriert seit: Aug 2001
Ort: Hannover
Beiträge: 1.577
komme wieder auf den gleichen ansatz wie schon gestern nacht:

PHP-Code:
// bewegungsmöglichkeiten checken
movieclip.prototype.checkWay = function () {
    
        
ways= new Array();    
        
//links
        
if(!_parent.tiles["tile"+(tile-1)]){
        
ways.push(0);
        } 
        
//oben
        
if(!_parent.tiles["tile"+(tile-10)]){
        
ways.push(2);
        } 
        
//rechts
        
if(!_parent.tiles["tile"+(tile+1)]){
        
ways.push(1);
        } 
        
//unten
        
if(!_parent.tiles["tile"+(tile+10)]){
        
ways.push(3);
        } 
        
        if(
ways.length==1rnd=0
        
else {
            while(
ways[rnd]==block){
                
rnd=random(ways.length);
            }
        }    

        
moveGhost(ways[rnd]);

         if(
ways[rnd]==0block=1
        
else if(ways[rnd]==1block=0
        
else if(ways[rnd]==2block=3
        
else if(ways[rnd]==3block=2;

2 stunden hab ich shcon nach dem felher gesucht und kann ihn nicht so richtig lokalisieren.
__________________
Website: www.thomas-vogel.de
emax ist offline   Mit Zitat antworten
Alt 02-12-2001, 13:51   #15 (permalink)
th.
Neuer User
 
Benutzerbild von th.
 
Registriert seit: Oct 2001
Ort: Bielefeld
Beiträge: 1.279
@dassoud:
Kaum sitzt man mal einen Tag nicht am Rechner, kommt einem schon jemand zuvor...

Bei meinen Überlegungen zur Iso-Engine hatte ich u. a. die Idee einfach Johannes geniale Pac-Man-Engine in einen MC zu packen, zu drehen und zu skalieren. Dann habe ich nur noch das Quadrat ein wenig verändert und ein die Scheibe gedreht und doppelt so hoch wie breit gemacht...
Hat ingesamt insgesamt etwa 10 min. gedauert kann sich aber dennoch sehen lassen.

anschauen

gruß
th.
__________________
polyaktiv.de
Flash 3D-Renderer
th. ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele