
Jaiel
Dauer-User
- 235
Hey mein Name ist Jaiel und ich hab ne dumme frage:
Erst mal ein paar Hintergrund infos:
Habe mit 19 während der asubildung einen ersten Kontakt zu C++ gehabt, ging aber nicht weit über Konsolen programme und ein paar minispiele mit circles und rects hinaus(pacman der kugeln frisst ohne hindernisse oder gamewelt einfach auf einer schwarzen fläche).
dann war lange Zeit pause udn jetzt habe ich mich vor 3 monaten entschieden apps mit android zu programmieren.
Bin gerade dabei ene kleine app zu erstellen ala 80er 2D shooter ... ganz simpel und endlos und so.
Es gibt folgende objekte zur zeit:
eine Vaterkalsse namens MovObj
Eine Klasse Enemy die von der Vaterklasse erbt
Eine Klasse Defender die auch von der Vaterklasse erbt
dann halt die Klassen:
-Defendershot(schüsse des defenders)
-Normalshot(es gibt einen normalEnemy)
-Missile(die benutzt der Bomber enemy)
an objekten generiere ich:
1 spacedefender (erbt von Defender, hat drei shoot modi)
5 Kamikaze(Enemy, fliegt auf defender zu)
5 Bomber(schießt auf den Defender Missiles ab) beinhaltet ein missile objekt, die er abschießt
5 Normal(schießt wie der Defender einfach gerade schüsse anch vorne)beinhaltet 10 NormalShots die er abschießt und zwar nach vorne
SO!!!
Ich baue jetzt schon seit 1 woche an dieser (blöden scheiß einfachen) sache nun schon rum und seit egstern bin ich an dem punkt wo ich stagniere udn nciht weiter weiß.
Mein Problem ist zur Zeit GANZ EINFACH DIE FU***** png files auf der app darzustellen.
also ihr seht ich bin ein richtiger noob zur zeit:
Mein Konzept der App ist einfach :
Eine Einstiegsactivity(Menü mit den Buttons "Spiel", "Einstellungen","keinahnungsonstnochwas...Highscore?")
Eine Gameactivity ...und der Rest kommt später.
(Ich verzweifle dass ich shcon seit ner woche daran sitze, wollte es "übers Wochenende" zu ende kriegen....nix da)
Ok die Gameactivity macht zur Zeit nur das:
also startet den Game thread:
der tut einfach nur das:
instanziert alle objekte die benutz werden
dann gehts auch schon ind en Game loop:
ich hab da paar sachen noch nciht implementiert
die ganzen logiken sind in den jeweiligen klassen impementiert also so a la jedes Objekt lümemrt sich um sich selbst und so
naja ok
die stelle wo collision test noch hinkommt da werde ich ienfach prüfen ob sich die positionen der jeweiligen onjekte überschneiden und die run methode setzt einfach die HP's der Enemies oder des Defender einfach um einen gewissen wert runter und zerstört die schüsse falls sie treffen oder aus dem bildschirm fliegen
so alles schön und gut:
zuerst werden die neuen positionen der objekte berechent
dann folgt eine (professionelle*lach*

) kollisionsabfrage
die "gamewelt" setzt bei kollision den wert isDestroyed der jew. zerstörten objekte auf true(isDestroyed=true)
so jetzt mein unwissen:
ich hab die positionen vond en objekten und möchte nun das frame neu zeichnen und zwar logischerweise mit den objekten die nich zerstört sind!!!
ALSO MEINE FRAGE IST EIGENLTICH:
Wie zeichne ich auf das aktuelle Fenster die .png Bilder auf den entsprechenden Positionen?
ganz einfach!!!!!!!!!!!!!!!!!!!!!!!!
ich habe erst angefangen mcih mit 2d Bibliotheken zu befassen den eine tag aber habe gemerkt dass ich die nciht brauche da ich ja sleber schond ie updates berechne und die kollisionen auchvgleich mit berechne und würde gerne auch das rendern noch hinterher amchen.
Ich möchte ganz einfach dieses Schema haben in meiner game loop und ich finde es genügt auch für diese game:
Positionen updaten
Kollisionen berechnen
Zeichnen
Warten falls 40 ms(25fps) noch nicht vorüber sind
und wieder von vorne anfangen falls Defender noch "lebt"
ok danke für jede hilfe und respkt dass du das heir zu ende gelsen hast
Außerdem entschuldige ich mcih für mien rechtschreibung sowie Gorß- und kleinschreibung
Vielen dank euer Jaiel!!!
Der ursprüngliche Beitrag von 21:44 Uhr wurde um 21:53 Uhr ergänzt:
und nchwas nur so nebenbei ich benutze sehr oft den System.currentTimeMillis(), ergibt das vllt einen großen overhead? uund findet ihr eine for loop einzubaune die ncihts tut bis 40 ms vorbei sind sinnvoll oder kann man den thread so lange schlafen legen(sleep()) bis diese zeit verstrichen sit oder amcht es keinen untrerschied=?
Erst mal ein paar Hintergrund infos:
Habe mit 19 während der asubildung einen ersten Kontakt zu C++ gehabt, ging aber nicht weit über Konsolen programme und ein paar minispiele mit circles und rects hinaus(pacman der kugeln frisst ohne hindernisse oder gamewelt einfach auf einer schwarzen fläche).
dann war lange Zeit pause udn jetzt habe ich mich vor 3 monaten entschieden apps mit android zu programmieren.
Bin gerade dabei ene kleine app zu erstellen ala 80er 2D shooter ... ganz simpel und endlos und so.
Es gibt folgende objekte zur zeit:
eine Vaterkalsse namens MovObj
Eine Klasse Enemy die von der Vaterklasse erbt
Eine Klasse Defender die auch von der Vaterklasse erbt
dann halt die Klassen:
-Defendershot(schüsse des defenders)
-Normalshot(es gibt einen normalEnemy)
-Missile(die benutzt der Bomber enemy)
an objekten generiere ich:
1 spacedefender (erbt von Defender, hat drei shoot modi)
5 Kamikaze(Enemy, fliegt auf defender zu)
5 Bomber(schießt auf den Defender Missiles ab) beinhaltet ein missile objekt, die er abschießt
5 Normal(schießt wie der Defender einfach gerade schüsse anch vorne)beinhaltet 10 NormalShots die er abschießt und zwar nach vorne
SO!!!
Ich baue jetzt schon seit 1 woche an dieser (blöden scheiß einfachen) sache nun schon rum und seit egstern bin ich an dem punkt wo ich stagniere udn nciht weiter weiß.
Mein Problem ist zur Zeit GANZ EINFACH DIE FU***** png files auf der app darzustellen.
also ihr seht ich bin ein richtiger noob zur zeit:
Mein Konzept der App ist einfach :
Eine Einstiegsactivity(Menü mit den Buttons "Spiel", "Einstellungen","keinahnungsonstnochwas...Highscore?")
Eine Gameactivity ...und der Rest kommt später.
(Ich verzweifle dass ich shcon seit ner woche daran sitze, wollte es "übers Wochenende" zu ende kriegen....nix da)
Ok die Gameactivity macht zur Zeit nur das:
Code:
public class GameActivity extends Activity{
/**
* irgendein javadoc shit
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
GameThread gt=new GameThread();
gt.run();
}
}
also startet den Game thread:
der tut einfach nur das:
instanziert alle objekte die benutz werden
Code:
public void run()
{
/**
* instances of the classes
*/
Defender defender=new Defender();
Normal normal[]=new Normal[enemyCount];
Kamikaze kamikaze[]=new Kamikaze[enemyCount];
Bomber bomber[]=new Bomber[enemyCount];
for(int i=0;i<enemyCount;i++)
{
normal[i]=new Normal();
kamikaze[i]=new Kamikaze();
bomber[i]=new Bomber();
}
dann gehts auch schon ind en Game loop:
Code:
//------------Modell-------------------
////////////////////////////moving the objects////////////////////////////////
//move the defender and call shoot() method
defender.moveDefender(delTime);
defender.shoot();
//move the enemies and call the respective shoot() methods
for(int i=0;i<enemyCount;i++)
{
if(!normal[i].isDestroyed)
{normal[i].moveNormal();normal[i].shoot();}
if(!kamikaze[i].isDestroyed)
kamikaze[i].moveKamikaze(defender.getPosX(),defender.getPosY(),delTime);
if(!bomber[i].isDestroyed)
{bomber[i].moveBomber(delTime);bomber[i].shootMissile();}
}
//move the missiles
for(int i=0;i<enemyCount;i++)
if(!bomber[i].missile.isDestroyed)
bomber[i].missile.moveMissile(defender.getPosX(), defender.getPosY(), delTime);
//move the shots of the defender
for(int i=0;i<defender.defenderShotCount;i++)
{
if(!defender.defenderShot[i].isDestroyed)defender.defenderShot[i].moveDefenderShot(delTime);
}
//move the shots of the normal enemy
for(int i=0;i<enemyCount;i++)
for(int j=0;j<normal[i].normalShotCount;j++)
{
if(!normal[i].normalShot[j].isDestroyed)normal[i].normalShot[j].moveNormalShot(delTime);
////////////////////////////////collision test//////////////////////////////
//collision with the boundaries of the screen
//collision of the defender with the objects
//collision of the objects with the defender's shots
//-------------View--------------------
//----------Controller-----------------
//before game loop continues
for(;System.currentTimeMillis()-oldTime<40;);
delTime=System.currentTimeMillis()-oldTime;
oldTime=System.currentTimeMillis();}
ich hab da paar sachen noch nciht implementiert
die ganzen logiken sind in den jeweiligen klassen impementiert also so a la jedes Objekt lümemrt sich um sich selbst und so
naja ok
die stelle wo collision test noch hinkommt da werde ich ienfach prüfen ob sich die positionen der jeweiligen onjekte überschneiden und die run methode setzt einfach die HP's der Enemies oder des Defender einfach um einen gewissen wert runter und zerstört die schüsse falls sie treffen oder aus dem bildschirm fliegen
so alles schön und gut:
zuerst werden die neuen positionen der objekte berechent
dann folgt eine (professionelle*lach*



die "gamewelt" setzt bei kollision den wert isDestroyed der jew. zerstörten objekte auf true(isDestroyed=true)
so jetzt mein unwissen:
ich hab die positionen vond en objekten und möchte nun das frame neu zeichnen und zwar logischerweise mit den objekten die nich zerstört sind!!!
ALSO MEINE FRAGE IST EIGENLTICH:
Wie zeichne ich auf das aktuelle Fenster die .png Bilder auf den entsprechenden Positionen?
ganz einfach!!!!!!!!!!!!!!!!!!!!!!!!
ich habe erst angefangen mcih mit 2d Bibliotheken zu befassen den eine tag aber habe gemerkt dass ich die nciht brauche da ich ja sleber schond ie updates berechne und die kollisionen auchvgleich mit berechne und würde gerne auch das rendern noch hinterher amchen.
Ich möchte ganz einfach dieses Schema haben in meiner game loop und ich finde es genügt auch für diese game:
Positionen updaten
Kollisionen berechnen
Zeichnen
Warten falls 40 ms(25fps) noch nicht vorüber sind
und wieder von vorne anfangen falls Defender noch "lebt"
ok danke für jede hilfe und respkt dass du das heir zu ende gelsen hast
Außerdem entschuldige ich mcih für mien rechtschreibung sowie Gorß- und kleinschreibung
Vielen dank euer Jaiel!!!
Der ursprüngliche Beitrag von 21:44 Uhr wurde um 21:53 Uhr ergänzt:
und nchwas nur so nebenbei ich benutze sehr oft den System.currentTimeMillis(), ergibt das vllt einen großen overhead? uund findet ihr eine for loop einzubaune die ncihts tut bis 40 ms vorbei sind sinnvoll oder kann man den thread so lange schlafen legen(sleep()) bis diese zeit verstrichen sit oder amcht es keinen untrerschied=?