Timer für Strategie Example

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

  • Timer für Strategie Example

    Hy

    also ich hab mal wieder spasshalber ein kleines aufbau strategie spiel erstellt....(also keines wegs fertig nur einen kleinen teil erstellt lol)

    und ich bin auf ein problem gestoßen.
    also ich hab ein Draw event das ein rechteck drawt und darauf sind 2 häuser die man anklicken kann.wenn man eines anklickt wird es auf die mouse_x und y angezeigt und man kann es dann in der welt positionieren.
    tut man das wird eine variable auf true gesetzt und ein timer gestartet der eine healthbar dort drawt wo das gebäude stehn wird.sobald die healthbar voll ist ist dann das gebäude zu sehen.

    aber mir ist aufgefallen das ich jetzt sobald diese healthbar existiert keine anderen häuser bauen kann.(anklicken und aufnehmen funktioniert.aber das platzieren nicht ..solange bis die healthbar weg ist)


    jetzt wollte ich euch fragen ob ihr da eine möglichkeit kennt sowas zu lösen.Ja ok ich könnte einfach noch 2 variablen erstellen (timer2,und warten2) aber das ist irgendwie blöd.weil was wenn ich 10 häuser auf einmal bauen will. dann müsste ich wieder 20 variablen hinzufügen. und das ist ja nicht effizient.

    wäre toll wenn ihr mir da denkanstöße geben könntet.

    bei weiteren fragen oder ähnliches bin immer da...kann auch code posten wenn ihr wollt damit ihr es versteht wie ichs aufgebaut habe.(wollts nur nicht gleich machen da es nicht wenig ist...)
  • Bin zwar selbst auch noch Anfänger, aber ich denke das das Problem ohne den Code zu lesen nicht einfach so zu lösen ist. Zeig doch mal her den Code, dann kann man dir da sicher besser helfen.
  • @Aku_Ryou
    hui ich versteh nicht ganz was du mit in jedem deiner häuser meinst?..

    ok hier mal der code

    obj_controller
    create event

    GML-Quellcode

    1. grab = false;
    2. grab1= false;
    3. klick = false;
    4. rand = false;
    5. stueck = 7
    6. stueck2= 5;
    7. cost1 = 270;
    8. cost2= 320;
    9. haus1= false;
    10. haus2= false;
    11. money = 1200;
    12. warten = false;
    13. time = 0;
    Alles anzeigen



    obj_controller
    step event

    GML-Quellcode

    1. x = mouse_x;
    2. y = mouse_y;
    3. if instance_exists(obj_controller)
    4. {
    5. move_snap(126,126);
    6. rand = true;
    7. }
    8. //-----------------------------------------------Hier schaue ich ob ich über den gedrawten bild bin von haus 2 und wenn ja setze die variable auf true-------------------//
    9. if collision_rectangle(view_xview+370,view_yview+1250,view_xview+670,view_yview+1530,obj_controller,false,false)&& mouse_check_button(mb_left)
    10. {
    11. grab = true;
    12. }
    13. //----Das selbe hier nur für haus1-----------------//
    14. else if collision_rectangle(view_xview+50,view_yview+1250,view_xview+350,view_yview+1530,obj_controller,false,false)&& mouse_check_button(mb_left)
    15. {
    16. grab1 = true;
    17. }
    Alles anzeigen


    obj_controller
    draw_event

    GML-Quellcode

    1. if (rand)
    2. {// Zeichnet ein rectangle um die maus für das snap
    3. draw_set_color(c_white);
    4. draw_rectangle(x-63,y-63,x+63,y+63,true);
    5. }
    6. // Zeichnet ein grosses rectangle wo dann die bilder der häuser sind
    7. draw_set_color(c_black);
    8. draw_rectangle(view_xview,view_yview+1200,view_wview,view_yview+1536,false);
    9. draw_rectangle(view_xview,view_yview+1200,view_wview,view_yview+1536,true);
    10. draw_set_color(c_white);
    11. draw_rectangle(view_xview+50,view_yview+1250,view_xview+350,view_yview+1530,false);
    12. draw_set_color(c_gray);
    13. draw_rectangle(view_xview+50,view_yview+1250,view_xview+350,view_yview+1530,true);
    14. draw_sprite(spr_haus1,0,view_xview+200,view_yview+1420);
    15. draw_set_color(c_black);
    16. //Hier wird die stückzahl und kosten gedrawt
    17. draw_text(view_xview+55,view_yview+1252,"Stueck:"+string(stueck));
    18. draw_text(view_xview+55,view_yview+1322,"Kosten:"+string(cost1));
    19. draw_set_color(c_white);
    20. draw_rectangle(view_xview+370,view_yview+1250,view_xview+670,view_yview+1530,false);
    21. draw_set_color(c_gray);
    22. draw_rectangle(view_xview+370,view_yview+1250,view_xview+670,view_yview+1530,true);
    23. draw_sprite(spr_haus2,0,view_xview+500,view_yview+1480);
    24. draw_set_color(c_black);
    25. //Hier wird die stückzahl und kosten gedrawt
    26. draw_text(view_xview+375,view_yview+1252,"Stueck:"+string(stueck2));
    27. draw_text(view_xview+375,view_yview+1322,"Kosten:"+string(cost2));
    28. if (grab)
    29. {
    30. //Also wenn das haus angeklickt wurde wird es aufgenommen mit einem niedrigen alpha
    31. draw_set_alpha(0.6);
    32. draw_sprite(spr_haus2,0,mouse_x,mouse_y);
    33. draw_set_alpha(1);
    34. }
    35. else if (grab1)
    36. {
    37. draw_set_alpha(0.6);
    38. draw_sprite(spr_haus1,0,mouse_x,mouse_y);
    39. draw_set_alpha(1);
    40. }
    41. //Hier wenn es aufgenommen wurde und man klickt auf einen grass feld und warten false ist (warten ist für die healthbar) werden koordinaten gespeichert und eine variable auf true gesetzt
    42. if (grab) && mouse_check_button(mb_right)&& (warten == false)
    43. {
    44. if !position_meeting(mouse_x,mouse_y,obj_rock)
    45. {
    46. klick = true;
    47. klick_x = mouse_x;
    48. klick_y = mouse_y;
    49. }
    50. }
    51. else if (grab1) && mouse_check_button(mb_right)&& (warten == false)
    52. {
    53. if !position_meeting(mouse_x,mouse_y,obj_rock)
    54. {
    55. klick = true;
    56. klick_x = mouse_x;
    57. klick_y = mouse_y;
    58. }
    59. }
    60. //Hier nur zum loslassen wenn man es doch nicht will
    61. if (grab)&& keyboard_check(vk_escape)
    62. {
    63. grab = false;
    64. }
    65. else if (grab1)&& keyboard_check(vk_escape)
    66. {
    67. grab1 = false;
    68. }
    69. //Hier wird dann die variablen für die healthbar und andere sachen wie audio und kosten berechnet
    70. if (klick)&&(grab)
    71. {
    72. if !audio_is_playing(snd_buy)&& (stueck2 > 0)&& (money > 320)&& (warten == false)
    73. {
    74. audio_play_sound(snd_buy,100,false);
    75. warten = true;
    76. //instance_create(mouse_x,mouse_y,obj_haus2);
    77. stueck2 -=1;
    78. money -= cost2;
    79. grab = false;
    80. klick= false;
    81. haus2 = true;
    82. }
    83. }
    84. else if (klick)&&(grab1)
    85. {
    86. if !audio_is_playing(snd_buy) && (stueck > 0)&& (money > 270) && (warten == false)
    87. {
    88. audio_play_sound(snd_buy,100,false);
    89. warten = true;
    90. //instance_create(mouse_x,mouse_y,obj_haus2);
    91. stueck -=1;
    92. money -= cost1;
    93. grab1 = false;
    94. klick= false;
    95. haus1= true;
    96. }
    97. }
    98. //Hier der Timer
    99. if (warten)&& (time < 500)
    100. {
    101. time++;
    102. }
    103. //Healthbar
    104. if (warten) && (time < 500)
    105. {
    106. draw_healthbar(klick_x-50,klick_y-10,klick_x+50,klick_y-2,time/5,c_black,c_red,c_green,0,true,true);
    107. }
    108. //Hier sobald die Healthbar voll ist (soll die bauzeit sein) wird endlich das haus aufgestellt
    109. if (haus1)&&(time >= 500)
    110. {
    111. var neu =instance_create(klick_x,klick_y,obj_haus1)
    112. warten = false;
    113. time = 0;
    114. }
    115. else if (haus2)&&(time >= 500)
    116. {
    117. var neu = instance_create(klick_x,klick_y,obj_haus2)
    118. warten = false;
    119. time = 0;
    120. }
    121. //Geldanzeige
    122. draw_text(view_xview+1800,view_yview+1250,"Money:"+string(money));
    123. //Spiel neustarten
    124. if keyboard_check(ord("R"))
    125. {
    126. game_restart();
    127. }
    Alles anzeigen




    Der Code schaut nach viel aus und vielleicht kompliziert wenn man schnell drüber blickt aber ihr werdet sehn das es nur einfacher krims kram ist....


    eine frage hätte ich dann noch neben der jetzigen:
    ich wollte das UI also die anklickbaren häuser auf den rechtek im draw_gui machen aber sobald ich es dort mache ist es nicht sichtbar...wieso??kann man vielleicht kein view benutzen in draw_gui????

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