Import base files.

This commit is contained in:
Glenn Y. Rolland 2008-02-18 09:55:16 +01:00
commit fec786f6c1
6 changed files with 246 additions and 0 deletions

80
Makefile Normal file
View File

@ -0,0 +1,80 @@
PROGRAMS=justnukeit
justnukeit_OBJS=Position.cmx Maze.cmx Player.cmx main.cmx
justnukeit_LIBS=graphics.cmxa
MODULES=$(patsubst %.mli,%,$(wildcard *.mli)) $(patsubst %.ml,%,$(wildcard *.ml))
CMI=$(patsubst %.ml,%.cmi,$(MODULES:=.ml))
CMO=$(patsubst %.ml,%.cmo,$(MODULES:=.ml))
CMX=$(patsubst %.ml,%.cmx,$(MODULES:=.ml))
#LIB=unix.cmxa str.cmxa graphics.cmxa
LIB=
OCAMLDEP=ocamldep
OCAMLOPT=ocamlopt
OCAMLC=ocamlc
SOURCE=main.ml
OPTS=-w A -g
define PROGRAM_template
ALL_OBJS += $$($(1)_OBJS)
$(1): $$($(1)_OBJS)
@echo -n -e "\x1B[31;1m"
@echo "[O] $@"
@echo -n -e "\x1B[0m"
$(OCAMLOPT) $(OPTS) $($(1)_LIBS) $($(1)_OBJS) -o $(1)
@echo ""
endef
$(foreach prog,$(PROGRAMS),$(eval $(call PROGRAM_template,$(prog))))
.PHONY: all
all: $(PROGRAMS)
%.cmi: %.mli
@echo -n -e "\x1B[31;1m"
@echo "[I] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
#@$(OCAMLC) $(OPTS) -c $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmx: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[C] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLOPT) -i $<
@$(OCAMLOPT) $(OPTS) -c $<
@echo ""
%.cmo %.cmi: %.ml %.cmi %.mli
@echo "[O] $<"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
%.cmo %.cmi: %.ml
@echo -n -e "\x1B[31;1m"
@echo "[O] $<"
@echo -n -e "\x1B[0m"
@$(OCAMLC) -i $<
@$(OCAMLC) $(OPTS) -c $<
echo ""
clean:
rm -f $(PROGRAMS) *~ *.cm* *.o *.a *.so .depend *.cmxa *.cma
.depend: $(MODULES:=.ml)
$(OCAMLDEP) $(MODULES:=.ml) $(MODULES:=.mli) > .depend
@echo ""
.SUFFIXES:
-include .depend

31
Maze.ml Normal file
View File

@ -0,0 +1,31 @@
type item_t =
| Bonus
| Malus
| NoItem
;;
type block_t =
| Solid
| Breakable
| NoBlock
;;
type t = {
mutable size_x : int ;
mutable size_y : int ;
mutable items : item_t array array ;
mutable blocks : block_t array array ;
};;
let default_x = 10;;
let default_y = 10;;
let create () = {
size_x = default_x ;
size_y = default_y ;
items = Array.make_matrix default_x default_y NoItem ;
blocks = Array.make_matrix default_x default_y NoBlock ;
}
;;

12
Player.ml Normal file
View File

@ -0,0 +1,12 @@
type t = {
mutable name : string ;
mutable lifes : int ;
mutable position : Position.t;
}
let create () = {
name = "Unnamed player" ;
lifes = 3 ;
position = Position.zero ;
}

10
Position.ml Normal file
View File

@ -0,0 +1,10 @@
type t = {
mutable x : int ;
mutable y : int ;
}
let zero = {
x = 0 ;
y = 0 ;
}

46
main.ml Normal file
View File

@ -0,0 +1,46 @@
(* vim: set ts=2 sw=2 et : *)
type game_event_t =
| MoveLeft
| MoveRight
| MoveUp
| MoveDown
| Action
| ActionTwo
| Help
| Quit
| None
;;
let dispatch_event status =
if status.Graphics.keypressed then
match status.Graphics.key with
| 'q' -> Quit
| _ -> None
else
None
;;
let game_loop () =
let continue = ref true
in
while !continue do
match dispatch_event ( Graphics.wait_next_event [Graphics.Poll] ) with
| Quit ->
continue := false ;
print_string "Exiting...\n";
| _ -> print_string "nothing...\n";
done
;;
let main () =
let player1 = Player.create ()
and map1 = Maze.create ()
in
Graphics.open_graph " 320x200+50+50";
Graphics.set_window_title "Just Nuke It";
game_loop ();
Graphics.close_graph ()
;;
main ();

67
main.old Normal file
View File

@ -0,0 +1,67 @@
type maze_t = Block of string
| Wall of int
| Empty of int
type bonus_t =
| Add_one_life
| Steal_one_life (* graal *)
| Speed
;;
type malus_t =
| Remove_one_life
| Slow_down
;;
type item_t =
| Lifelong_bonus of bonus_t
| Lifelong_malus of malus_t
| Limited_malus of malus_t * int (* seconds *)
| Limited_bonus of bonus_t * int (* seconds *)
type bomb_action_t =
| Explode
type direction_t =
| Top
| Bottom
| Left
| Right
;;
type player_action_t =
| Move of direction_t
| Push_bomb of direction_t
| Jump_walls of int
;;
type bomb_modifier_t =
| Cross of int
| Square of int
| Fungus of int (* time to live *)
;;
type bomb = {
player: player_t ;
modifiers: bomb_modifier_t list
};;
type bomb_action_t =
| Appear_at of int * int
| Explode;;
type action_t =
| Bomb of bomb_action_t
| Player of player_action_t
| Display of int * int * string
;;
let main () =
Graphics.open_graph " 320x200+50+50";
Graphics.set_window_title "Just Nuke It";
Graphics.wait_next_event [];
Graphics.close_graph ()
;;
main ();