Seite 5 von 5 ErsteErste 12345
Ergebnis 101 bis 113 von 113

Thema: [Aufgabenstellung] Programmierwettbewerb Nr 4

  1. #101
    [ Alive since 1998 ]

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    24.471
    ngb:news Artikel
    2

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    @KaPiTN: Super! - Das wollte ich hören!
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp 500 +++ dwrox.net

  2. #102
    [ Alive since 1998 ]

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    24.471
    ngb:news Artikel
    2

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    PS: Hast du dir nen Zeitplan gesteckt, bis wann du abgeben willst?
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp 500 +++ dwrox.net

  3. #103
    Boomer ♪♪♫♪♫♫♪

    (Threadstarter)

    Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    18.071
    ngb:news Artikel
    12

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Einen?



    I've lost that coding' feelin'
    Whoa, that coding' feelin'
    I've lost that coding' feelin'
    Now it's gone, gone, gone, woh

    Keyboard, Keyboard, Keyboard, Keyboard
    I beg you please, please, please, please
    I need your love, need your love
    I need your love, I need your love
    So bring it on back, so bring it on back
    Bring it on back, bring it on back

    Bring back that coding' feelin'
    Whoa, that coding' feelin'
    Bring back that coding' feelin'
    'Cause it's gone, gone, gone
    And I can't go on, woh

    Bring back that coding' feelin'
    Whoa, that coding' feelin'
    Bring back that coding' feelin'
    'Cause it's gone, gone, gone
    Eigentlich nur noch ein Abend, aber ich habe da eine echte Schreibblockade. "Das Schreiben wird als qualvoll empfunden. Häufig treten schon beim Gedanken an die Anfertigung der Arbeit oder beim Anblick des Bildschirms körperliche Symptome wie Unwohlsein oder Nervosität auf und es werden Vermeidungshandlungen wie Aufräumen, Putzen etc. ausgeführt."
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  4. #104
    Brillenschlange Avatar von Kenobi van Gin
    Registriert seit
    Jul 2013
    Ort
    .\
    Beiträge
    3.487
    ngb:news Artikel
    1

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Dazu fällt mir ein motivierenderer Song ein:

    Now these points of data make a beautiful line
    And we're out of Beta, we're releasing on time.
    So I'm GLaD I got burned, think of all the things we learned!
    For the people who are still alive!
    Wer den Song kennt, darf sich einen Keks freuen, eins der besten Spiele der letzten Jahre gespielt zu haben

  5. #105
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    73

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Zitat Zitat von Kenobi van Gin Beitrag anzeigen
    Wer den Song kennt, darf sich einen Keks freuen, eins der besten Spiele der letzten Jahre gespielt zu haben
    Der Keks war lecker. Eines der wenigen Male dass ich einen Abspann bei einem Spiel komplett angesehen habe. Mehrfach.

  6. #106
    Brillenschlange Avatar von Kenobi van Gin
    Registriert seit
    Jul 2013
    Ort
    .\
    Beiträge
    3.487
    ngb:news Artikel
    1

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Definitiv! Habs eben erst nochmal durchgespielt
    Nun wieder der zweite Teil. Den habe ich auch tatsächlich noch nicht durch. Ich bin gespannt.

  7. #107
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    73

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Wie schauts denn aus, wann kommt denn da noch was?

  8. #108
    Boomer ♪♪♫♪♫♫♪

    (Threadstarter)

    Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    18.071
    ngb:news Artikel
    12

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Nach ein wenig Urlaub konnte ich die Abneigung gegen Freizeitprogrammierung überwinden.
    Ich muß mich da auch nochmal bei allen entschuldigen, vor allem, wo ich selber im Vorfeld so einen Wind über die Abliefermoral gemacht habe.
    Aber das war keine einfache Unlust, das war schon eine körperliche Abneigung, die mich da blockiert hat.

    Hat dann auch die Woche noch ein wenig gedauert, weil ich alles noch mal auf den Kopf stellen mußte.
    Ich war ja zu 95% fertig, habe dann aber bei den ersten Tests gemerkt, daß das nicht spielbar war. Das ruckelte nur.
    Ich hatte alles so schön objektorientiert und schön die Logik von der Visualisierung getrennt, aber Windows Forms ist für Formulare, nicht für Spiele.
    Ich hatte gedacht, ich habe Klassen, wo ich dann verschieden Bilder übereinanderlege und die dann an die Form übergebe, aber das funktioniert nicht zufriedenstellend.
    ich habe das dann mit Threading probiert, aber das knallt und wenn man das synchronisiert, was ich dann gemacht habe, dann hat man den Vorteil des Multithreadings verschenkt.

    Jetzt ist der Code nicht mehr so schön und ich male direkt auf dem Graphik-Objekt der Form, aber ist wenigstens flüssig.
    Die Schriftanzeigen konnte ich auch nicht verwende, das paßt zeitlich nicht mit der Aktualisierung der Graphik, daher mußte die Schrift auch über die Graphik erstellt werden.

    LunarLander.z01.zipLunarLander.zip

    (Bei LunarLander.z01.zip das '.zip' entfernen,( Packetdatei, konnte ohne Dateiendung nicht geladen werden) und dann LunarLander.zip entpacken)

    Spoiler: 




    Spoiler: 



    Spoiler: 



    src.zip
    Für diesen Beitrag bedankt sich theSplit
    Geändert von KaPiTN (18.09.19 um 18:28 Uhr) Grund: Quellcode beigefügt
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  9. #109
    [ Alive since 1998 ]

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    24.471
    ngb:news Artikel
    2

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Ich traue meinen Augen nicht, der Kapitn hat was abgegeben und ich habs nicht gesehen?

    Bei einer sicheren Landung fehlt eigentlich nur noch ein Trollface... aber schön anzusehen, wobei mir nicht ganz klar ist, was dieses "Radar" darstellt, Wind(stärke)?

    Und ich finds gut, dass du den inneren Schweinehund überwunden hast.
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp 500 +++ dwrox.net

  10. #110
    Boomer ♪♪♫♪♫♫♪

    (Threadstarter)

    Avatar von KaPiTN
    Registriert seit
    Jul 2013
    Beiträge
    18.071
    ngb:news Artikel
    12

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Ja. Das soll eine Windrose sein. Gibt die Richtung und die Stärke an. Ist noch der Erstentwurf. Könnte schöner sein aber macht was es soll.

    Wieso Trollface? Was stimmt mit dem Astronauten nicht?
    J'irai pisser sur votre bombes
    You can educate a fool, but you cannot make him think

  11. #111
    [ Alive since 1998 ]

    Moderator

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    24.471
    ngb:news Artikel
    2

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Ach so... cool. Irgendwie aber schon 10 mal besser als in meiner Umsetzung... (Pfeil).

    Dann hätten wir wohl alle, die die was abgeben wollten, abgegeben?
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp 500 +++ dwrox.net

  12. #112
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    504

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    @theSplit: sieht so aus.

  13. #113

    Re: [Aufgabenstellung] Programmierwettbewerb Nr 4

    Moin.

    Ich hatte ja leider nur mal so nen Zwischenstand gepostet und dann nix mehr von mir hören lassen. Hab meinen Quellcode wieder gefunden... auf meinem Arbeitslaptop - sehr untypisch. Na jedenfalls, hier ist ein Video vom damaligen Endprodukt (hab jetzt nix weiter dran gemacht)

    https://vimeo.com/376013549

    Und hier der Quellcode (das boardeigene Code-Tag unterstützt kein Lisp-Highlighting )

    Spoiler: 


    Code (Bash):
    1.  
    2. (defpackage lunar
    3.   (:use :trivial-gamekit)
    4.   (:export #:start))
    5.  
    6. ;; Load gamekit (for developing only)
    7. ;; (ql:quickload :trivial-gamekit)
    8.  
    9. (defun get-time-stamp ()
    10.   (/ (get-internal-real-time)
    11.      internal-time-units-per-second))
    12.  
    13. ;; state type of the game
    14. (defstruct state x-v y-v y-a x-pos y-pos angle up? rotate-left? rotate-right? fuel)
    15.  
    16. ;; initial state value
    17. (defparameter initial-state (make-state :x-v 0 :y-v 0 :y-a 0 :x-pos 350 :y-pos 500
    18.                                         :angle 0 :up? nil :rotate-left? nil :rotate-right? nil
    19.                                         :fuel 1000))
    20.  
    21. ;; globals
    22. (defparameter *s* initial-state)
    23. (defparameter *pause* nil)
    24. (defparameter *status* :play)
    25. (defparameter *canvas-width* 800)
    26. (defparameter *canvas-height* 600)
    27. (defparameter *a* 0.2)
    28. (defparameter *thrust-a* -0.5)
    29. (defparameter *lander-width* 40)
    30. (defparameter *lander-height* 40)
    31.  
    32. ;; landing zone, consists of a start and end x-pos
    33. (defstruct landing-zone start end)
    34. (defun random-landing-zone (width)
    35.   (let* ((half (/ width 2))
    36.          (middle (+ half (random (- *canvas-width* width)))))
    37.     (make-landing-zone :start (- middle half)
    38.                        :end (+ middle half))))
    39. (defparameter *landing-zone* (random-landing-zone 70))
    40.  
    41. (gamekit:defgame lunar-lander () ()
    42.   (:viewport-width *canvas-width*)
    43.   (:viewport-height *canvas-height*)
    44.   (:viewport-title "Lunar Lander"))
    45.  
    46. (gamekit:define-image :lander "lander.png")
    47.  
    48. (defun initialize ()
    49.   (setf *pause* t)
    50.   (setf *status* :play)
    51.   (setf *s* initial-state)
    52.   (setf *landing-zone* (random-landing-zone 70)))
    53.  
    54. ;; functions to determine new values
    55. (defun new-x-pos (x-pos v)
    56.   (cond
    57.     ((> x-pos (+ 40 *canvas-width*)) -40)
    58.     ((< x-pos -40) (+ 40 *canvas-width*))
    59.     (t (+ x-pos v))))
    60.  
    61. (defun new-v (a old-v)
    62.   (+ old-v (* 0.04 a)))
    63.  
    64. (defun new-y-a (s)
    65.   (if (state-up? s)
    66.       (+ *a* *thrust-a*)
    67.       *a*))
    68.  
    69. (defun new-y-pos (y-pos v)
    70.   (- y-pos v))
    71.  
    72. (defun new-y-v (a angle old-v)
    73.   (+ old-v (* (cos angle) 0.04 a)))
    74.  
    75. (defun new-x-v (a angle old-v)
    76.   (+ old-v (* (sin angle) 0.04 a)))
    77.  
    78. (defun new-angle (s)
    79.   (let* ((old (state-angle s))
    80.          (right? (state-rotate-right? s))
    81.          (left? (state-rotate-left? s)))
    82.     (cond
    83.       ((and left? right?) old)
    84.       ((and right? (> old -1.4))
    85.        (- old 0.04))
    86.       ((and left? (< old 1.4))
    87.        (+ old 0.04))
    88.       (t old))))
    89.  
    90. (defun lander-left-pos (x-pos)
    91.   (- x-pos (/ *lander-width* 2)))
    92.  
    93. (defun lander-right-pos (x-pos)
    94.   (+ x-pos (/ *lander-width* 2)))
    95.  
    96. ;; win condition helping functions
    97. (defun lander-on-landing-zone? (x-pos landing-zone)
    98.   (let ((left (lander-left-pos x-pos))
    99.         (right (lander-right-pos x-pos)))
    100.     (and (> left (landing-zone-start landing-zone))
    101.          (< right (landing-zone-end landing-zone)))))
    102.  
    103. (defun won? (y-v angle)
    104.   (and (lander-on-landing-zone? (state-x-pos *s*) *landing-zone*)
    105.        (< y-v 0.4)
    106.        (< angle 0.08)))
    107.  
    108. (defun on-ground? (y-pos)
    109.   (< y-pos 10))
    110.  
    111. ;; gets invoked on every time tick
    112. (defun update-state ()
    113.   (cond
    114.     ((< (state-fuel *s*) 0)
    115.      (setf *status* :lose))
    116.  
    117.     ;; win condition
    118.     ((and (on-ground? (state-y-pos *s*))
    119.           (won? (state-y-v *s*) (state-angle *s*)))
    120.      (setf *status* :win))
    121.  
    122.     ;; lose condition
    123.     ((on-ground? (state-y-pos *s*))
    124.      (setf *status* :lose))
    125.  
    126.     ;; Not on ground and enough fuel
    127.     (t
    128.      (setf *s* (make-state :x-v (new-x-v (if (state-up? *s*)
    129.                                              *thrust-a* 0)
    130.                                          (state-angle *s*)
    131.                                          (state-x-v *s*))
    132.                            :y-v (new-y-v (state-y-a *s*)
    133.                                          (state-angle *s*)
    134.                                          (state-y-v *s*))
    135.                            :y-a (new-y-a *s*)
    136.                            :x-pos (new-x-pos (state-x-pos *s*) (state-x-v *s*))
    137.                            :y-pos (new-y-pos (state-y-pos *s*) (state-y-v *s*))
    138.                            :up? (state-up? *s*)
    139.                            :rotate-left? (state-rotate-left? *s*)
    140.                            :rotate-right? (state-rotate-right? *s*)
    141.                            :angle (new-angle *s*)
    142.                            :fuel (if (state-up? *s*)
    143.                                      (- (state-fuel *s*) 1)
    144.                                      (state-fuel *s*)))))))
    145.  
    146. (defun key-bindings ()
    147.   (gamekit:bind-button :p :pressed
    148.                        (lambda () nil))
    149.   (gamekit:bind-button :p :released
    150.                        (lambda () (setf *pause* (not *pause*))))
    151.   (gamekit:bind-button :up :pressed
    152.                        (lambda () (setf (state-up? *s*) t)))
    153.   (gamekit:bind-button :up :released
    154.                        (lambda () (setf (state-up? *s*) nil)))
    155.   (gamekit:bind-button :left :pressed
    156.                        (lambda () (setf (state-rotate-left? *s*) t)))
    157.  
    158.   (gamekit:bind-button :left :released
    159.                        (lambda () (setf (state-rotate-left? *s*) nil)))
    160.  
    161.   (gamekit:bind-button :right :pressed
    162.                        (lambda () (setf (state-rotate-right? *s*) t)))
    163.  
    164.   (gamekit:bind-button :right :released
    165.                        (lambda () (setf (state-rotate-right? *s*) nil)))
    166.  
    167.   (gamekit:bind-button :r :pressed
    168.                        (lambda ()
    169.                          (initialize))))
    170.  
    171. (defun draw-img (img x-pos y-pos width height scaling rot-deg)
    172.   (gamekit:with-pushed-canvas ()
    173.     (gamekit:translate-canvas x-pos y-pos)
    174.     (gamekit:rotate-canvas rot-deg)
    175.     (gamekit:scale-canvas scaling scaling)
    176.     (gamekit:draw-image (gamekit:vec2 (/ width -2) (/ height -2)) img)))
    177.  
    178. (defun draw-landing-zone (landing-zone)
    179.   (gamekit:draw-line (gamekit:vec2 (landing-zone-start landing-zone)
    180.                                    0)
    181.                      (gamekit:vec2 (landing-zone-end landing-zone)
    182.                                    0)
    183.                      (gamekit:vec4 1 1 1 1)
    184.                      :thickness 3))
    185.  
    186. (defun draw-header ()
    187.   (gamekit:draw-text "Lunar Lander" (gamekit:vec2 300 570) :fill-color (gamekit:vec4 1 1 1 1)))
    188.  
    189. (defun draw-stats ()
    190.   (gamekit:with-pushed-canvas ()
    191.     (gamekit:scale-canvas 0.75 0.75)
    192.     (gamekit:draw-text (format nil "State: ~a" *status*) (gamekit:vec2 0 700)
    193.                        :fill-color (gamekit:vec4 1 1 1 1))
    194.     (gamekit:draw-text (format nil "Pause: ~a" *pause*) (gamekit:vec2 0 670)
    195.                        :fill-color (gamekit:vec4 1 1 1 1))
    196.     (gamekit:draw-text (format nil "Angle: ~2,2@F" (state-angle *s*)) (gamekit:vec2 0 640)
    197.                        :fill-color (gamekit:vec4 1 1 1 1))
    198.     (gamekit:draw-text (format nil "y-velocity: ~2,2@F" (* 10 (floor (* (state-y-v *s*) 10)))) (gamekit:vec2 0 610)
    199.                        :fill-color (gamekit:vec4 1 1 1 1))
    200.     (gamekit:draw-text (format nil "FUEL: ~a" (state-fuel *s*)) (gamekit:vec2 0 580)
    201.                        :fill-color (gamekit:vec4 1 1 1 11))))
    202.  
    203. (defmethod gamekit:draw ((this lunar-lander))
    204.   (gamekit:draw-rect (gamekit:vec2 0 0) (- *canvas-width* 1) (- *canvas-height* 1)
    205.                      :fill-paint (gamekit:vec4 0 0 0 1)
    206.                      :stroke-paint (gamekit:vec4 0 0 0 1))
    207.   (draw-img :lander (state-x-pos *s*) (state-y-pos *s*) *lander-width* *lander-height* 0.5 (state-angle *s*))
    208.   (draw-landing-zone *landing-zone*)
    209.   (draw-header)
    210.   (draw-stats))
    211.  
    212. ;; tick function
    213. (defmethod gamekit:act ((this lunar-lander))
    214.   (if *pause*
    215.       nil
    216.       (update-state)))
    217.  
    218. (defun start ()
    219.   (gamekit:start 'lunar-lander :autoscaled nil)
    220.  (key-bindings))
    221.  
    222. (start)
    223.  
    224.  

    Und hier mit Code-Highlighting https://www.codepile.net/pile/yjyr6aXg.

    Leider hab ich das unter Windows nicht zum Kompilieren gekriegt, deshalb nur Code und Video.
    Für diesen Beitrag bedankt sich theSplit

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •