January 2019
Intermediate to advanced
298 pages
7h 46m
English
Our game will have only two entities – one representing the spaceship and the other representing bullets. To better organize the code, we will put all entity-related code in its own file, src/reagi_game/entities.cljs. This file will also contain some of the rendering logic, so we'll need to require monet:
(ns reagi-game.entities
(:require [monet.canvas :as canvas]
[monet.geometry :as geom]))
Next, we'll add a few helper functions so that we avoid repeating ourselves too much:
(defn shape-x [shape]
(-> shape :pos deref :x))
(defn shape-y [shape]
(-> shape :pos deref :y))
(defn shape-angle [shape]
@(:angle shape))
(defn shape-data [x y angle]
{:pos (atom {:x x :y y})
:angle (atom angle)})
The first three functions are simply ...