platform-but-no-platforms-poc.fnl

#739
Raw
Author
winny
Created
May 1, 2023, 2:38 a.m.
Expires
Never
Size
2.1 KB
Hits
65
Syntax
Fennel
Private
✗ No
;; title:   platform PoC
;; author:  game developer, email, etc.
;; desc:    short description
;; site:    website link
;; license: MIT License (change this to your license of choice)
;; version: 0.1
;; script:  fennel
;; strict:  true

(var UP 0)
(var DOWN 1)
(var LEFT 2)
(var RIGHT 3)
(var PLATFORM-THICKNESS 3)
(var FLOOR-Y 125)
(var FLOOR-COLOR 3)
(var BG 1)
(var AVATAR-SIZE 4)
(var AVATAR-COLOR 5)

(var pos-x 120)
(var pos-y 20)
(var jumping 0)
(var double-jump false)


(fn jumpingp []
  (and jumping (> jumping 0)))
;; Is the avator airborne?
(fn airbornep []
  (< pos-y (- FLOOR-Y AVATAR-SIZE)))

(fn move [dx dy]
  (set pos-x (math.min (- 240 AVATAR-SIZE) (math.max 0 (+ dx pos-x))))
  (set pos-y (math.min (- FLOOR-Y AVATAR-SIZE) (math.max 0 (+ dy pos-y)))))

(fn _G.TIC []
  (when (btn RIGHT) (move 1 0))
  (when (btn LEFT) (move -1 0))
  (when (and (btnp UP) (not double-jump))
    (when (airbornep)
      (set double-jump true))
    (set jumping (+ jumping 4)))
  (if (jumpingp)
      (do
        (move 0 (- (* 1.5 AVATAR-SIZE)))
        (set jumping (- jumping 1)))
      (if (airbornep)
          (move 0 .8)
          (set double-jump false)))
  (cls BG)
  (rect 0 FLOOR-Y 240 PLATFORM-THICKNESS FLOOR-COLOR)
  (rect pos-x pos-y AVATAR-SIZE AVATAR-SIZE AVATAR-COLOR))

;; <TILES>
;; 001:eccccccccc888888caaaaaaaca888888cacccccccacc0ccccacc0ccccacc0ccc
;; 002:ccccceee8888cceeaaaa0cee888a0ceeccca0ccc0cca0c0c0cca0c0c0cca0c0c
;; 003:eccccccccc888888caaaaaaaca888888cacccccccacccccccacc0ccccacc0ccc
;; 004:ccccceee8888cceeaaaa0cee888a0ceeccca0cccccca0c0c0cca0c0c0cca0c0c
;; 017:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
;; 018:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
;; 019:cacccccccaaaaaaacaaacaaacaaaaccccaaaaaaac8888888cc000cccecccccec
;; 020:ccca00ccaaaa0ccecaaa0ceeaaaa0ceeaaaa0cee8888ccee000cceeecccceeee
;; </TILES>

;; <TRACKS>
;; 000:100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;; </TRACKS>

;; <PALETTE>
;; 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
;; </PALETTE>