Score mit Tilesets

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Score mit Tilesets

    Hallo,

    ich habe eine ganz bescheidene Frage.

    Ich will nicht den Befehl Draw-Score nutzen, sondern dafür den Score in Form von Grafiken anzeigen lassen.

    Wie mache ich das?

    danke für hilfe
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • also ich bin mir ja nicht ganz sicher was du meist, aber wenn du für jeden punkt die selbe grafik in einer reihe anzeigen lassen willst, kannst du das z.b. so machen (name durch ein sprite ersetzen):

    GML-Quellcode

    1. temp=0;
    2. repeat score
    3. {
    4. temp+=25;
    5. draw_sprite(NAME,0,100+temp,100);
    6. }
    dieser code zeigt ein sprite an position x=125, y=100 und zeigt für jeden weiteren punkt eine weiteres sprite 25 pixel weiter rechts an. alos in einer reihe. wenn du aber viele punkte hast (ca 200 oder mehr), werden die sprites ausserhalb des raumes angezeigt.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von WIN ()

  • Original von WIN
    also ich bin mir ja nicht ganz sicher was du meist, aber wenn du für jeden punkt die selbe grafik in einer reihe anzeigen lassen willst, kannst du das z.b. so machen (name durch ein sprite ersetzen):

    GML-Quellcode

    1. temp=0;
    2. repeat score
    3. {
    4. temp+=25;
    5. draw_sprite(NAME,0,100+temp,100);
    6. }
    dieser code zeigt ein sprite an position x=125, y=100 und zeigt für jeden weiteren punkt eine weiteres sprite 25 pixel weiter rechts an. alos in einer reihe. wenn du aber viele punkte hast (ca 200 oder mehr), werden die sprites ausserhalb des raumes angezeigt.


    Verstehe ich den Code richtig? Ich habe Zahlen als Sprites 0-9, welche den Score anzeigen sollen. Das Game geht bis höchstens 9999 Punkte.

    Wenn ich doch nun nur repeat score eingebe, dann weiß das Programm doch nicht, welche Zahl es wo setzen soll...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • ach so!
    mein code ist für ein sprite gedacht, das so oft gezeigt wird, wie punkte der spieler hat. z.b. du hast 10 punkte, dann wird 10 mal das selbe sprite nebeneinander angezeigt.
    warum müssen es denn umbedingt sprites sein? gibts das nicht als font, die du includieren kannst?
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    ach so!
    mein code ist für ein sprite gedacht, das so oft gezeigt wird, wie punkte der spieler hat. z.b. du hast 10 punkte, dann wird 10 mal das selbe sprite nebeneinander angezeigt.
    warum müssen es denn umbedingt sprites sein? gibts das nicht als font, die du includieren kannst?


    Hier ist die Schriftart die ich includen will: (Ist halt ein einziges GIF):
    (Und ich habe auch keine Lust, das Bild nun auseinanderzuschneiden).

    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Original von Andyworld
    ich könnte dir ein example machen
    wenn mir jemand sagen könnte wie man die quersumme von einer variable im gm ausgibt


    Hiermit

    GML-Quellcode

    1. quer=0;
    2. while (zahl!=0){
    3. quer= quer + (zahl mod 10);
    4. zahl=floor(zahl / 10);
    5. }
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • naja ich habe jetzt vielleicht die blödste lösung gefunden aber besser als nichts

    mit leertaste erhöht man die punkte
    Dateien
    • zahlen.zip

      (2,56 kB, 123 mal heruntergeladen, zuletzt: )
    Die Schönheit liegt im Auge des Betrachters :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Andyworld ()

  • oh je, das geht doch viel einfacher!

    ich hab für ein programm von mir mal ein Script dafür geschrieben:

    GML-Quellcode

    1. //argument0=Zahl als String (z.B. "620")
    2. //argument1=Start-X-Position
    3. //argument2=Start-Y-Position
    4. //argument3=Versetzung der Ziffern (Breite des Zahlensprites)
    5. //argument4=Ziffern-Sprite
    6. len=string_length(argument0);
    7. for (i=0;i<len;i+=1)
    8. {
    9. str[i]=string_char_at(argument0,i+1);
    10. }
    11. i=0;
    12. x_pos=argument1;
    13. y_pos=argument2;
    14. while(i<len)
    15. {
    16. draw_sprite(argument4,real(str[i]),x_pos,y_pos);
    17. x_pos+=argument3;
    18. i+=1;
    19. }
    Alles anzeigen


    Dabei muss im Ziffern-Sprite das image 0 die Ziffer 0, das image 1 die Ziffer 1 usw. sein.
    “Computers are good at following instructions, but not at reading your mind.” (Donald Knuth)

    Ich schreibe mit Neo.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Bottleneck ()

  • Original von AdM-Master
    oh je, das geht doch viel einfacher!

    ich hab für ein programm von mir mal ein Script dafür geschrieben:

    GML-Quellcode

    1. //argument0=Zahl als String (z.B. "620")
    2. //argument1=Start-X-Position
    3. //argument2=Start-Y-Position
    4. //argument3=Versetzung der Ziffern (Breite des Zahlensprites)
    5. //argument4=Ziffern-Sprite
    6. len=string_length(argument0);
    7. for (i=0;i<len;i+=1)
    8. {
    9. str[i]=string_char_at(argument0,i+1);
    10. }
    11. i=0;
    12. x_pos=argument1;
    13. y_pos=argument2;
    14. while(i<len)
    15. {
    16. draw_sprite(argument4,real(str[i]),x_pos,y_pos);
    17. x_pos+=argument3;
    18. i+=1;
    19. }
    Alles anzeigen


    Dabei muss im Ziffern-Sprite das image 0 die Ziffer 0, das image 1 die Ziffer 1 usw. sein.


    Danke, werde ich nachher ausprobieren und berichten ob es funktioniert hat.

    Habe aber noch ein Problem, eher eine Unwissenheit.

    Ich habe ein Spiel wo 2 Spieler gegeneinander kämpfen müßen. Nun habe ich aber doch nur eine Health-Bar. Wenn ich Set Health to 100 bei jedem der Spieler einsetze, werden dann zwei Health-Bars generiert?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • nein.
    du musst 2 healt variablen und 2 healthbars erstellen:

    create event:
    player1_health=100;
    player2_health=100;

    draw event:
    draw_healthbar(x,y,x,y,player1_health,c_black,c_red,c_lime,1,true,true);
    draw_healthbar(x,y,x,y,player2_health,c_black,c_red,c_lime,1,true,true);
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    nein.
    du musst 2 healt variablen und 2 healthbars erstellen:

    create event:
    player1_health=100;
    player2_health=100;

    draw event:
    draw_healthbar(x,y,x,y,player1_health,c_black,c_red,c_lime,1,true,true);
    draw_healthbar(x,y,x,y,player2_health,c_black,c_red,c_lime,1,true,true);


    Nun habe ich das mal so gemacht. Allerdings mit global-variablen.

    Jetzt findet das Programm die Variablen nicht mehr. Kann jemand mal nachschauen?

    Hier die Datei:
    Against each law
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • ich hab mir das spiel mal angesehen und festgestellt, das es sehr ungünstig programmiert ist. du benötigst für die bewegung der einzelnen spieler keine weiteren objecte. es würde reichen, wenn du das sprite änderst.
    zu deinem eigendlichen problem: du verwendest manchmal player_healt bzw. player_lives und manchmal player1_healt bzw. player1_lives. verwende von vorne herein gleiche namen! ein änderen essenzieller variablen ist meistens mit sehr viel arbeit verbunden. ich habe vor allem bezeichnungsfehler im object game_control gefunden.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    ich hab mir das spiel mal angesehen und festgestellt, das es sehr ungünstig programmiert ist. du benötigst für die bewegung der einzelnen spieler keine weiteren objecte. es würde reichen, wenn du das sprite änderst.
    zu deinem eigendlichen problem: du verwendest manchmal player_healt bzw. player_lives und manchmal player1_healt bzw. player1_lives. verwende von vorne herein gleiche namen! ein änderen essenzieller variablen ist meistens mit sehr viel arbeit verbunden. ich habe vor allem bezeichnungsfehler im object game_control gefunden.


    Danke fürs Nachschauen.

    Ja es ist sehr "unsinnig" programmiert. Gebe ich zu. Die Variablen die du dir angeschaut hast, sind aber notwendig.

    global.player_health
    global.player2_health
    global.player_lives
    global.player2_lives

    Für jeden Spieler halt Health und Lives.

    Es sind echt etliche Fehler drinne. Aber einige konnte ich selbst beseitigen.

    Jetzt habe ich eine Abfrage gestartet:

    z. B.

    if global player_health 90
    change energieanzeige_player2 to energieanzeige90_player2

    Aber bei jedem Schuss wird die ganze Anzeige gelöscht...

    Kann jemand mal nachschauen?

    Hier nochmal der Link mit der neuen Datei:

    Against each Law


    Ich glaube das Spiel sollte ich lieber abschreiben....
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von magic_hero ()

  • wenn man beim speil die taste 0 drückt dann wird der erste spiele ganz komisch
    obwohl es glaube ich der knopf zum schießen ist
    und ein tipp
    die ganzen bewegungen kann man auch in einem object machen
    und die richtung mit sprite_index wechseln
    oder fals du gm registriert hast
    gibt es noch so ein mirror ding
    zum sprites spiegeln

    viel glück noch mit deinem spiel ;)
    Die Schönheit liegt im Auge des Betrachters :D
  • Original von Andyworld
    wenn man beim speil die taste 0 drückt dann wird der erste spiele ganz komisch
    obwohl es glaube ich der knopf zum schießen ist
    und ein tipp
    die ganzen bewegungen kann man auch in einem object machen
    und die richtung mit sprite_index wechseln
    oder fals du gm registriert hast
    gibt es noch so ein mirror ding
    zum sprites spiegeln

    viel glück noch mit deinem spiel ;)


    Danke - Glück kann ich gut gebrauchen. Doch eher gute Tips!

    Ich habe nun alles gelöscht, bis auf zwei Player mit Grundfunktionen.

    Doch wenn ich nen Schuß abgebe und treffe, dann wird die Health-Bar komplett gelöscht. Dabei soll sie in 10er-Schritten runter gehen. Das heißt 10 Schüsse mit jeweils 10 Sprite-Anzeigen der Health-Bar.

    So ein Sch... das kann doch nicht so kompliziert sein.

    Kann es daran liegen das ich folgendes gemacht habe: (nehmen wir Player 1)

    wenn player1 von einem Schuß getroffen wird (collision player1 im shoot-objekt), dann setze global.player_health -10.

    Prüfe ob global.player_health 90,80,70 usw.. beträgt.

    wenn health 90 dann ersetze player1_energieanzeige(ist ein objekt was ich vorher im game_controll objekt und create-event erstellt habe)
    durch player1_energieanzeige90 oder 80 oder 70 usw...

    Erst klappte es auch, als ich noch die feste Health-Variable aus dem Programm nahm.

    Hier mal ein Bild was ich meine:


    Ist das denn so schwer zwei Spieler zu erstellen die gegeneinander kämpfen und bei jedem Treffer des anderen 1/10 der Energieanzeige verlieren?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Original von Andyworld
    hast du global.player_health -= 90
    benutz?
    wenn nicht dann probier es mal aus
    es sollte dann klappen


    Was soll das bringen? Damit setze ich ja den Health um 90 runter.

    Und wo soll ich es einsetzen als if oder als set?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...