Pārlūkot izejas kodu

Just data structure barebones for a tiny game for now...

master
Ognjen Milan Robovic pirms 7 mēnešiem
vecāks
revīzija
83ae976814
3 mainītis faili ar 77 papildinājumiem un 0 dzēšanām
  1. +7
    -0
      compile.sh
  2. +7
    -0
      install.sh
  3. +63
    -0
      xabina.adb

+ 7
- 0
compile.sh Parādīt failu

@@ -0,0 +1,7 @@
#!/bin/bash

set -xe

gnatmake xabina.adb

exit

+ 7
- 0
install.sh Parādīt failu

@@ -0,0 +1,7 @@
#!/bin/bash

set -xe

cp xabina /usr/bin/xabina

exit

+ 63
- 0
xabina.adb Parādīt failu

@@ -0,0 +1,63 @@
-- Experimental minimal terminal rogue-like game in Ada programming language. I used to write a lot of Ada programs some time ago, then went in full C and assembly mode, and came
-- back to Ada, but realized that I keep my folders messy... Since it's bothersome to find my old Ada projects and share them here, I decided that the most easy thing to do is to write
-- a new program in Ada, a tiny game. Work in progress, it's messy and ugly for now...

with ada.text_io, ada.strings.unbounded;
use ada.text_io, ada.strings.unbounded;

--~ TODO: Do not use this command below, it's for real-time game...
--~ TODO: gnatmake xabina.adb && stty raw -echo && ./xabina && reset

function xabina return integer is

type entity_id is (ENTITY_NONE, ENTITY_MENU, ENTITY_TILE, ENTITY_ITEM, ENTITY_PLANT, ENTITY_ANIMAL, ENTITY_GOBLIN, ENTITY_PLAYER);
type tile_id is (TILE_NONE, TILE_VOID, TILE_WALL, TILE_FLOOR, TILE_HOLE, TILE_STAIRS_DOWN, TILE_STAIRS_UP, TILE_DOOR);
type item_id is (ITEM_NONE, ITEM_AMMUNITION, ITEM_WEAPON, ITEM_ARMOUR, ITEM_SCROLL, ITEM_POTION, ITEM_CONSUMABLE, ITEM_NOTE);
type plant_id is (PLANT_NONE, PLANT_GRASS, PLANT_REED, PLANT_BUSH, PLANT_APPLE_TREE, PLANT_LEMON_TREE, PLANT_OAK_TREE, PLANT_PINE_TREE);
type animal_id is (ANIMAL_NONE, ANIMAL_RAT, ANIMAL_BAT, ANIMAL_SPIDER, ANIMAL_LIZARD, ANIMAL_SNAIL, ANIMAL_WORM, ANIMAL_MOLE);
type goblin_id is (GOBLIN_NONE, GOBLIN_WORKER, GOBLIN_WARRIOR, GOBLIN_BOAR_RIDER, GOBLIN_SHAMAN, GOBLIN_CHIEF, GOBLIN_KING, GOBLIN_OGRE);

type tile_list_id is (STONE_WALL, WOODEN_WALL, STONE_FLOOR, WOODEN_FLOOR);

type entity (this : entity_id) is
record
id : entity_id := ENTITY_NONE;
name : unbounded_string := null_unbounded_string;
code : character := ' ';
collide : boolean := false;
case this is
when ENTITY_TILE =>
tile : tile_id := TILE_NONE;
when ENTITY_ITEM =>
item : item_id := ITEM_NONE;
weight : natural := 0;
value : natural := 0;
when ENTITY_PLANT =>
plant : plant_id := PLANT_NONE;
generate_item : item_id := ITEM_NONE;
generate_rate : natural := 0;
when others =>
null;
--~ TODO: Other entity types...
end case;
end record;

type tile_list is array (tile_list_id) of entity (ENTITY_TILE);

data_tile : constant tile_list := (
(this => ENTITY_TILE, id => ENTITY_TILE, name => to_unbounded_string ("Stone Wall"), code => '$', tile => TILE_WALL, collide => true),
(this => ENTITY_TILE, id => ENTITY_TILE, name => to_unbounded_string ("Wooden Wall"), code => '#', tile => TILE_WALL, collide => true),
(this => ENTITY_TILE, id => ENTITY_TILE, name => to_unbounded_string ("Stone Floor"), code => '.', tile => TILE_FLOOR, collide => false),
(this => ENTITY_TILE, id => ENTITY_TILE, name => to_unbounded_string ("Wooden Floor"), code => '=', tile => TILE_FLOOR, collide => false)
);

begin

for this in tile_list_id
loop
put_line ("> " & to_string (data_tile (this).name));
end loop;

return 0;

end xabina;

Notiek ielāde…
Atcelt
Saglabāt