summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/commodities.lisp16
-rw-r--r--src/game.lisp19
-rw-r--r--src/main.lisp17
-rw-r--r--src/player.lisp36
-rw-r--r--src/zone.lisp17
-rw-r--r--transacc.asd14
6 files changed, 119 insertions, 0 deletions
diff --git a/src/commodities.lisp b/src/commodities.lisp
new file mode 100644
index 0000000..2ce7cb7
--- /dev/null
+++ b/src/commodities.lisp
@@ -0,0 +1,16 @@
+(defpackage :commodities
+ (:use :cl)
+ (:export :new-commodity))
+
+(in-package :commodities)
+
+(defclass commodity ()
+ ((name :initarg :name
+ :reader name)
+ (price :initarg :price
+ :accessor price)))
+
+(defun new-commodity (name price)
+ (make-instance 'commodity
+ :name name
+ :price price))
diff --git a/src/game.lisp b/src/game.lisp
new file mode 100644
index 0000000..7c2cbbb
--- /dev/null
+++ b/src/game.lisp
@@ -0,0 +1,19 @@
+(defpackage game
+ (:use :cl)
+ (:export :new-game))
+
+(in-package :game)
+
+(defclass game ()
+ ((player :initarg player
+ :accessor player)
+ (zones :initarg zones
+ :accessor zones)
+ (curzone :initarg start-zone
+ :accessor cur-zone)))
+
+(defun new-game (player zones start-zone)
+ (make-instance 'game
+ :player player
+ :zones zones
+ :start-zone start-zone))
diff --git a/src/main.lisp b/src/main.lisp
new file mode 100644
index 0000000..9c0ba32
--- /dev/null
+++ b/src/main.lisp
@@ -0,0 +1,17 @@
+(in-package :cl-user)
+(defpackage transacc
+ (:use :cl)
+ (:export :main))
+
+(in-package :transacc)
+
+(defun main ()
+ (let ((player (player:init-player "Joze" 2000))
+ (zones
+ (list
+ (zone:new-zone "Bronx"
+ (list (commodities:new-commodity "speed" 500)
+ (commodities:new-commodity "grass" 40))))))
+ (assert (equal (zone:name (car zones)) "Bronx"))
+ (assert (equal (player:name player) "Joze"))
+ (format t "~a in the game" (player:name player))))
diff --git a/src/player.lisp b/src/player.lisp
new file mode 100644
index 0000000..f6ee371
--- /dev/null
+++ b/src/player.lisp
@@ -0,0 +1,36 @@
+(defpackage player
+ (:use :cl)
+ (:export :init-player
+ :name))
+
+(in-package :player)
+
+(defclass inventory ()
+ ((size :initarg :size
+ :reader size)
+ (filled :initform 0
+ :accessor filled)
+ (items :initform '()
+ :accessor items)))
+
+(defclass player ()
+ ((name :initarg :name
+ :reader name)
+ (cash :initarg :cash
+ :accessor cash)
+ (debt :initarg :debt
+ :accessor debt)
+ (hp :initform 100
+ :accessor hp)
+ (clout :initform 0
+ :accessor clout)
+ (stash :initform 0
+ :accessor stash)
+ (stock :initform (make-instance 'inventory :size 100)
+ :accessor stock)))
+
+(defun init-player (name &optional (cash 2000) (debt 5000))
+ (make-instance 'player
+ :name name
+ :cash cash
+ :debt debt))
diff --git a/src/zone.lisp b/src/zone.lisp
new file mode 100644
index 0000000..3121a5c
--- /dev/null
+++ b/src/zone.lisp
@@ -0,0 +1,17 @@
+(defpackage zone
+ (:use :cl)
+ (:export :new-zone
+ :name))
+
+(in-package :zone)
+
+(defclass zone ()
+ ((name :initarg :name
+ :reader name)
+ (commodities :initarg :commodities
+ :accessor commodities)))
+
+(defun new-zone (name commodities)
+ (make-instance 'zone
+ :name name
+ :commodities commodities))
diff --git a/transacc.asd b/transacc.asd
new file mode 100644
index 0000000..6330a31
--- /dev/null
+++ b/transacc.asd
@@ -0,0 +1,14 @@
+(require 'asdf)
+(asdf:defsystem "transacc"
+ :version "0.0.1"
+ :author "Elouan Gros, Isciane Gros"
+ :licence ""
+ :depends-on ()
+ :components ((:module "src"
+ :components
+ ((:file "main" :depends-on ("game"))
+ (:file "game" :depends-on ("zone" "player"))
+ (:file "zone" :depends-on ("commodities"))
+ (:file "player" :depends-on ("commodities"))
+ (:file "commodities"))))
+ :description "Buy and sell to greatness")