Skip to content

Commit

Permalink
Automated commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Larkenx committed May 1, 2018
1 parent bbb71c0 commit bcc58aa
Show file tree
Hide file tree
Showing 33 changed files with 951 additions and 211 deletions.
File renamed without changes
Binary file added rendered-ascii2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/.DS_Store
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/entities_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("4485bd26ae4e19e344acdd982117a4c5aa2e6e42" . "3dfc9a4e963179a5727c8ec9b3110d0cf6a2e6e0") #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\point.rkt" (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
("6.12" ("aac09700962317fc9e9bbaddd51bb6e9684e00e5" . "167230e4ec7634b952220c2adf6864a0ef9b6b21") #"/Users/larken/git/LispGameJam/src/point.rkt" (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file modified src/compiled/drracket/errortrace/entities_rkt.zo
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/game-screen_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("0e0bd21f99411759055becd350113cbf114fab73" . "e446a7c9ae302df7ac737ca2f02f0d9916a8a07c") #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\inventory-screen.rkt" #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\point.rkt" #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\screen.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
("6.12" ("7b13dcd8d8066fb320ca203f943d375142bffa46" . "0a676a7dac54c4d2f7042a7512b3b8fb303eac6a") #"/Users/larken/git/LispGameJam/src/inventory-screen.rkt" #"/Users/larken/git/LispGameJam/src/map-generation.rkt" #"/Users/larken/git/LispGameJam/src/point.rkt" #"/Users/larken/git/LispGameJam/src/screen.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file modified src/compiled/drracket/errortrace/game-screen_rkt.zo
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/inventory-screen_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("feba9cd7b68186a0c67f78dc4394699f6a6aca35" . "584c4da8d24ef21bf465d224a3fd1ca75f34a93b") #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\screen.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
("6.12" ("459ac034457bb571fe2007122c9e4a6a0e19274b" . "e7bf0813a6bbace5755344a02b181f36a3bc7342") #"/Users/larken/git/LispGameJam/src/screen.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
Binary file modified src/compiled/drracket/errortrace/inventory-screen_rkt.zo
Binary file not shown.
1 change: 1 addition & 0 deletions src/compiled/drracket/errortrace/items_rkt.dep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
("6.12" ("9dba4bfc56437ae20e63187a75f5e15c5d50e1f3" . "22ba58f1a89219be91daa888857db033cd852aaa") #"/Users/larken/git/LispGameJam/src/point.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file added src/compiled/drracket/errortrace/items_rkt.zo
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/map-generation_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("7b68ba0823d8004e8ef5937549897602aacbf100" . "0f0230417bbb838632ace3b636baa5b16a2a34cb") #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\point.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"noise" #"main.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
("6.12" ("a894dfc083e01a9a9b28c4df606057f5d300ab95" . "817fa10a96d670827c38d2404b10778aa282bc29") #"/Users/larken/git/LispGameJam/src/entities.rkt" #"/Users/larken/git/LispGameJam/src/items.rkt" #"/Users/larken/git/LispGameJam/src/point.rkt" #"/Users/larken/git/LispGameJam/src/tiles.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"noise" #"main.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file modified src/compiled/drracket/errortrace/map-generation_rkt.zo
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/point_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("ca58fe6577647fa8098a13c8a0f8a0a38784fcd2" . "993e6f5264ee26984152d1638fd723311934eb44") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
("6.12" ("30ca029b6ff90c7447eada78cab71df502ddbd3e" . "993e6f5264ee26984152d1638fd723311934eb44") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/screen_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("e616b95773a9b30530fbcd0fbc588852da5c505b" . "993e6f5264ee26984152d1638fd723311934eb44") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
("6.12" ("39ec486216d56009bc06ce2bcebb4c2cdcd05bf4" . "993e6f5264ee26984152d1638fd723311934eb44") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
Binary file modified src/compiled/drracket/errortrace/screen_rkt.zo
Binary file not shown.
1 change: 1 addition & 0 deletions src/compiled/drracket/errortrace/tiles_rkt.dep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
("6.12" ("43334548c8175864f5e77fd0e7791b9862cd42eb" . "57008848262fcd417d822bbf1b32114f0ed8ac3f") (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file added src/compiled/drracket/errortrace/tiles_rkt.zo
Binary file not shown.
2 changes: 1 addition & 1 deletion src/compiled/drracket/errortrace/world_rkt.dep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
("6.12" ("9c1fa0e01578390c77532a2a043a1a46dd6b7702" . "a643c1520339151ce3dc666c24ecd03c3b1ed777") #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\entities.rkt" #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\game-screen.rkt" #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\map-generation.rkt" #"C:\\Users\\Larken\\git\\LispGameJame2018\\src\\point.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
("6.12" ("9953795aca5daf58321ff4afcd64d5c02cba9ce1" . "5af61e58a5de044ea340ead98c359f8f058f9afd") #"/Users/larken/git/LispGameJam/src/entities.rkt" #"/Users/larken/git/LispGameJam/src/game-screen.rkt" #"/Users/larken/git/LispGameJam/src/map-generation.rkt" #"/Users/larken/git/LispGameJam/src/point.rkt" (collects #"2htdp" #"image.rkt") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt") (collects #"thing" #"main.rkt"))
Binary file modified src/compiled/drracket/errortrace/world_rkt.zo
Binary file not shown.
5 changes: 3 additions & 2 deletions src/entities.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
(define-thing entity
[character "x"]
[color "white"]
[background-color "black"]
[location (pt 0 0)]
[inventory '()]
[view-range 5])
Expand All @@ -28,9 +29,9 @@
[(act self world)
(send world try-move
self
(+ (thing-get 'location)
(+ (thing-get self 'location)
(pt (- (random 3) 1)
(- (random 3) 1))))])
(- (random 3) 1))))])

; A seeking enemy runs towards the player (heedless of walls) 50% of the time
; The other 50% of the time they are identical to a wandering enemy
Expand Down
70 changes: 70 additions & 0 deletions src/entities.rkt~
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#lang racket

(provide (all-defined-out))

(require thing "point.rkt")

; All entities have:
; - a location on the map
; - attack and defense strengths
; - hitpoints
; - an inventory
(define-thing entity
[character "x"]
[color "white"]
[location (pt 0 0)]
[inventory '()]
[view-range 5])

(define-thing enemy entity
[name "enemy"]
[color "red"]
[attack 10]
[defense 10]
[health 10]
[(act self world) (void)])

(define-thing wandering-enemy enemy
[(act self world)
(send world try-move
self
(+ (thing-get 'location)
(pt (- (random 3) 1)
(- (random 3) 1))))])

; A seeking enemy runs towards the player (heedless of walls) 50% of the time
; The other 50% of the time they are identical to a wandering enemy
(define-thing seeking-enemy wandering-enemy
[(act self world)
(cond
; 50/50 of a seeking move
[(= 0 (random 2))
(define player-pt (thing-get (send world get-player) 'location))
(define self-pt (thing-get self 'location))
(define dir (unit (- player-pt self-pt)))
(send world try-move
self
(+ self-pt
(inexact->exact (round (pt-x dir)))
(inexact->exact (round (pt-y dir)))))]
; Otherwise, wander
[else
(thing-call wandering-enemy 'act self world)])])

; A fleeing enemy moves the exact opposite of a seeking enemy
(define-thing fleeing-enemy wandering-enemy
[(act self world)
(cond
; 50/50 of a fleeing move
[(= 0 (random 2))
(define player-pt (thing-get (send world get-player) 'location))
(define self-pt (thing-get self 'location))
(define dir (unit (- player-pt self-pt)))
(send world try-move
self
(- self-pt
(inexact->exact (round (pt-x dir)))
(inexact->exact (round (pt-y dir)))))]
; Otherwise, wander
[else
(thing-call wandering-enemy 'act self world)])])
162 changes: 111 additions & 51 deletions src/game-screen.rkt
Original file line number Diff line number Diff line change
@@ -1,53 +1,113 @@
#lang racket
(require "point.rkt" "screen.rkt" "inventory-screen.rkt" 2htdp/image thing)
(provide game-screen%)
(require "point.rkt" "screen.rkt" "inventory-screen.rkt" "map-generation.rkt" 2htdp/image thing)
(provide game-screen% text/menlo text/menlo/small)
(define (text/menlo s color) (text/font s 28 color "Menlo" 'script 'normal 'normal #f))
(define (text/menlo/small s color) (text/font s 20 color "Menlo" 'script 'normal 'normal #f))
(define game-screen%
(class screen%
(init-field TILE_SIZE WIDTH HEIGHT)
(define width-in-characters (quotient WIDTH TILE_SIZE))
(define height-in-characters (quotient HEIGHT TILE_SIZE))
(define/public (get-width-in-characters) width-in-characters)
(define/public (get-height-in-characters) height-in-characters)

; draw a character at a location with given colors on the given image
(define (draw-char c x y fg bg canvas)
(let ([char (overlay
(text/font c TILE_SIZE fg "Menlo" 'script 'normal 'normal #f)
(rectangle TILE_SIZE TILE_SIZE "solid" "black"))])
(place-image/align char (* x TILE_SIZE) (* y TILE_SIZE) 'left 'top canvas)))

(define (draw-entity e canvas)
(define p (thing-get e 'location))
(draw-char (thing-get e 'character) (pt-x p) (pt-y p) (thing-get e 'color) "transparent" canvas))


(define/override (render state)
; basic idea for a render:
; - render viewport of map using tile-at method on state
; - render the player, and non-player-characters
(define canvas (rectangle WIDTH HEIGHT "solid" "black"))
(define player (send state get-player))
(define draw-@ (recenter this (pt 0 0)))
(for* ([xi (in-range width-in-characters)]
[yi (in-range height-in-characters)])
(define x/y (recenter this (- (thing-get player 'location) (pt xi yi))))
(define tile (send state tile-at (pt-x x/y) (pt-y x/y)))
(set! canvas (draw-char (thing-get tile 'character) xi yi (thing-get tile 'color) "transparent" canvas)))
(draw-char (thing-get player 'character) (pt-x draw-@) (pt-y draw-@) (thing-get player 'color) "transparent" canvas))

; key event handler for player input while viewing in-game display
(define/override (key-handler state key)
(define player (send state get-player))
(define location (thing-get player 'location))
(case key
[("numpad4" "h" "left") (send state try-move player (- location (pt -1 0)))]
[("numpad6" "l" "right") (send state try-move player (- location (pt 1 0)))]
[("numpad2" "j" "down") (send state try-move player (- location (pt 0 1)))]
[("numpad8" "k" "up") (send state try-move player (- location (pt 0 -1)))]
[("numpad7" "y") (send state try-move player (- location (pt -1 -1)))]
[("numpad9" "u") (send state try-move player (- location (pt 1 -1)))]
[("numpad1" "b") (send state try-move player (- location (pt -1 1)))]
[("numpad3" "n") (send state try-move player (- location (pt 1 1)))]
[else state]))

(super-new)))
(class screen%
(init-field TILE_SIZE WIDTH HEIGHT)
(define width-in-characters (quotient WIDTH TILE_SIZE))
(define height-in-characters (quotient HEIGHT TILE_SIZE))
(define/public (get-width-in-characters) width-in-characters)
(define/public (get-height-in-characters) height-in-characters)

; draw a character at a location with given colors on the given image
(define (draw-char c x y fg bg canvas)
(let ([char (overlay
(text/font c 28 fg "Menlo" 'script 'normal 'normal #f)
(rectangle TILE_SIZE TILE_SIZE "solid" bg))])
(place-image/align char (* x TILE_SIZE) (* y TILE_SIZE) 'left 'top canvas)))

(define (draw-entity e state canvas)
(define p (thing-get e 'location))
(define x/y (recenter this (- (thing-get (send state get-player) 'location) (pt (pt-x p) (pt-y p)))))
(define tile (send state tile-at (pt-x x/y) (pt-y x/y)))
(draw-char (thing-get e 'character) (pt-x x/y) (pt-y x/y) (thing-get e 'color) (thing-get tile 'background-color) canvas))


(define/override (render state)

(define player (send state get-player))
(define p (thing-get player 'location))
(define draw-@ (recenter this (pt 0 0)))
(define canvas (rectangle WIDTH HEIGHT "solid" "black"))
; right-panel to hold stats, items held
(define separator (rectangle (* TILE_SIZE .25) HEIGHT "solid" (make-color 175 199 193)))
(define hp (string-append
"HP: "
(number->string (thing-get player 'health))
" / "
(number->string (thing-get player 'max-health))))
(define HUD
(let ([panel (rectangle (* TILE_SIZE 15) (- HEIGHT 180) "solid" (color 14 58 57))]
[get-gem (λ (f) (if (f (thing-get player 'gems)) "" ""))])
(place-image/align
(above/align 'left
(text/menlo "Merlin" (make-color 175 199 193)) ; name of character
(text/menlo hp "white") ; hp / maxhp
(text/menlo (string-append "DEF: " (number->string (thing-get player 'defense))) "white")
(beside (text/menlo "Gems: " "white") ; gems collected
(text/menlo (get-gem first) (make-color 0 146 251))
(text/menlo (get-gem second) "green")
(text/menlo (get-gem third) "red")
(text/menlo (get-gem fourth)"white")))
10 10 'left 'top panel)))
(define logs-viewer
(let ([result (rectangle (* TILE_SIZE 15) 180 "solid" (color 14 58 57))]
[logs (send state get-logs)])
(place-image/align
(text/menlo/small (foldr (λ (log r) (string-append r "\n" log)) "" logs) "white")
0 0 'left 'top
result)))

(define (draw-tile x y tile c)
(let ([items (thing-get tile 'items)])
(cond
[(not (empty? items)) (draw-char (thing-get (first items) 'character) x y (thing-get (first items) 'color) (thing-get tile 'background-color) c)]
[else (draw-char (thing-get tile 'character) x y (thing-get tile 'color) (thing-get tile 'background-color) c)])))


; render all of the tiles in the viewport
(for* ([xi (in-range width-in-characters)]
[yi (in-range height-in-characters)])
(define x/y (recenter this (- (thing-get player 'location) (pt xi yi))))
(define tile (send state tile-at (pt-x x/y) (pt-y x/y)))
(set! canvas (draw-tile xi yi tile canvas)))
; render the player to the viewport
(set! canvas (draw-char (thing-get player 'character)
(pt-x draw-@) (pt-y draw-@)
(thing-get player 'color)
(thing-get (send state tile-at (pt-x p) (pt-y p)) 'background-color)
canvas))


; render all other npcs to the viewport
(for ([npc (get-npcs)])
(set! canvas (draw-entity npc state canvas)))

; render a separator and panel next to the game-viewport for a HUD
(beside
canvas
separator
(above HUD logs-viewer)))


; key event handler for player input while viewing in-game display
(define/override (key-handler state key)
(define player (send state get-player))
(define location (thing-get player 'location))
(case key
[("numpad4" "h" "left") (send state try-move player (- location (pt -1 0)))]
[("numpad6" "l" "right") (send state try-move player (- location (pt 1 0)))]
[("numpad2" "j" "down") (send state try-move player (- location (pt 0 1)))]
[("numpad8" "k" "up") (send state try-move player (- location (pt 0 -1)))]
[("numpad7" "y") (send state try-move player (- location (pt -1 -1)))]
[("numpad9" "u") (send state try-move player (- location (pt 1 -1)))]
[("numpad1" "b") (send state try-move player (- location (pt -1 1)))]
[("numpad3" "n") (send state try-move player (- location (pt 1 1)))])
;[("q") (send state kill-player)]
;[("w") (send state collect-all-gems)])
(send state update)
state)

(super-new)))
53 changes: 53 additions & 0 deletions src/game-screen.rkt~
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#lang racket
(require "point.rkt" "screen.rkt" "inventory-screen.rkt" 2htdp/image thing)
(provide game-screen%)
(define game-screen%
(class screen%
(init-field TILE_SIZE WIDTH HEIGHT)
(define width-in-characters (quotient WIDTH TILE_SIZE))
(define height-in-characters (quotient HEIGHT TILE_SIZE))
(define/public (get-width-in-characters) width-in-characters)
(define/public (get-height-in-characters) height-in-characters)

; draw a character at a location with given colors on the given image
(define (draw-char c x y fg bg canvas)
(let ([char (overlay
(text/font c TILE_SIZE fg "Menlo" 'script 'normal 'normal #f)
(rectangle TILE_SIZE TILE_SIZE "solid" "black"))])
(place-image/align char (* x TILE_SIZE) (* y TILE_SIZE) 'left 'top canvas)))

(define (draw-entity e canvas)
(define p (thing-get e 'location))
(draw-char (thing-get e 'character) (pt-x p) (pt-y p) (thing-get e 'color) "transparent" canvas))


(define/override (render state)
; basic idea for a render:
; - render viewport of map using tile-at method on state
; - render the player, and non-player-characters
(define canvas (rectangle WIDTH HEIGHT "solid" "black"))
(define player (send state get-player))
(define draw-@ (recenter this (pt 0 0)))
(for* ([xi (in-range width-in-characters)]
[yi (in-range height-in-characters)])
(define x/y (recenter this (- (thing-get player 'location) (pt xi yi))))
(define tile (send state tile-at (pt-x x/y) (pt-y x/y)))
(set! canvas (draw-char (thing-get tile 'character) xi yi (thing-get tile 'color) "transparent" canvas)))
(draw-char (thing-get player 'character) (pt-x draw-@) (pt-y draw-@) (thing-get player 'color) "transparent" canvas))

; key event handler for player input while viewing in-game display
(define/override (key-handler state key)
(define player (send state get-player))
(define location (thing-get player 'location))
(case key
[("numpad4" "h" "left") (send state try-move player (- location (pt -1 0)))]
[("numpad6" "l" "right") (send state try-move player (- location (pt 1 0)))]
[("numpad2" "j" "down") (send state try-move player (- location (pt 0 1)))]
[("numpad8" "k" "up") (send state try-move player (- location (pt 0 -1)))]
[("numpad7" "y") (send state try-move player (- location (pt -1 -1)))]
[("numpad9" "u") (send state try-move player (- location (pt 1 -1)))]
[("numpad1" "b") (send state try-move player (- location (pt -1 1)))]
[("numpad3" "n") (send state try-move player (- location (pt 1 1)))]
[else state]))

(super-new)))
Loading

0 comments on commit bcc58aa

Please sign in to comment.