dungeonfile.txt
This commit is contained in:
parent
69ffd510b6
commit
2f174161f1
5
TODO.md
5
TODO.md
|
@ -1,8 +1,9 @@
|
|||
# TODO
|
||||
|
||||
## Bugs
|
||||
- [ ] after creating dungeon, the player 'jumps' but investigating the gameFile everything looks ok in there. hmmm. it looks like it's not displaying the player where i think they should be located.
|
||||
- [ ] not all emoji are same width so different size players cause map row to get off of lined up grid
|
||||
|
||||
## Roadmap
|
||||
- [ ] what's the game mechanic / concept? should be one clear concept
|
||||
- [.] saveFile should actually save json file (as text) with map and all the tiles in each position:
|
||||
- [X] player position,
|
||||
|
@ -10,4 +11,4 @@
|
|||
- [ ] item positions,
|
||||
- [ ] terrain positions
|
||||
- [ ] inventory file to save inventory
|
||||
- [ ] save date and check for today's date (if so, you cannot move, but can you do something else?)
|
||||
- [X] save date and check for today's date (if so, you cannot move, but can you do something else?)
|
||||
|
|
171
dotd.js
171
dotd.js
|
@ -6,16 +6,19 @@ const argv = yargs(hideBin(process.argv)).argv
|
|||
const fs = require("fs");
|
||||
const dungeonFile = "dungeonfile.txt";
|
||||
const gameFile = "gamefile.txt";
|
||||
const dateFile = "datefile.txt";
|
||||
|
||||
//globals
|
||||
const width = 20;
|
||||
const height = 5;
|
||||
let dungeon;
|
||||
let today;
|
||||
let player = {"position": {
|
||||
"x": null,
|
||||
"y": null,
|
||||
},
|
||||
"avatar": "@"
|
||||
"avatar": "@",
|
||||
"movedToday": false
|
||||
};
|
||||
|
||||
let parseArgs = () => {
|
||||
|
@ -24,12 +27,13 @@ let parseArgs = () => {
|
|||
createDungeon();
|
||||
choosePlayer();
|
||||
placePlayer();
|
||||
//placeItems();
|
||||
} else {
|
||||
loadDungeon();
|
||||
loadPlayer();
|
||||
movePlayer();
|
||||
//loadItems();
|
||||
}
|
||||
createTerrain();
|
||||
}
|
||||
|
||||
let loadDungeon = () => {
|
||||
|
@ -53,33 +57,46 @@ let loadPlayer = () => {
|
|||
}
|
||||
|
||||
let movePlayer = () => {
|
||||
if (argv.r || argv.right){
|
||||
if (player.position.x < width-1){
|
||||
console.log('moved right');
|
||||
player.position.x++;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.l || argv.left){
|
||||
if (player.position.x > 0){
|
||||
console.log('moved left');
|
||||
player.position.x--;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.u || argv.up){
|
||||
if (player.position.y>0){
|
||||
console.log('moved up');
|
||||
player.position.y--;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.d || argv.down){
|
||||
if (player.position.y<height-1){
|
||||
console.log('moved down');
|
||||
player.position.y++;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
//if moving
|
||||
if (argv.r || argv.right || argv.l || argv.left || argv.u || argv.up || argv.d || argv.down) { //check to see if moving first
|
||||
|
||||
if(!player.movedToday){ //check to see if player did not move yet
|
||||
|
||||
if (argv.r || argv.right){
|
||||
if (player.position.x < width-1){
|
||||
console.log('moved right');
|
||||
player.position.x++;
|
||||
player.movedToday = true;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.l || argv.left){
|
||||
if (player.position.x > 0){
|
||||
console.log('moved left');
|
||||
player.position.x--;
|
||||
player.movedToday = true;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.u || argv.up){
|
||||
if (player.position.y>0){
|
||||
console.log('moved up');
|
||||
player.position.y--;
|
||||
player.movedToday = true;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
} else if (argv.d || argv.down){
|
||||
if (player.position.y<height-1){
|
||||
console.log('moved down');
|
||||
player.position.y++;
|
||||
player.movedToday = true;
|
||||
} else {
|
||||
console.log("can't go that way");
|
||||
}
|
||||
}
|
||||
} else { //you already moved
|
||||
console.log("already moved today");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,6 +130,67 @@ let placePlayer = () => {
|
|||
//dungeon[player.position.y][player.position.x] = "@"
|
||||
}
|
||||
|
||||
//-------------CREATE ITEMS---------------------------------------
|
||||
let createItems = () => {
|
||||
//how many items spawn on screen?
|
||||
//maybe spawn on dungeon overall?
|
||||
}
|
||||
|
||||
let placeItems = () => {
|
||||
|
||||
}
|
||||
|
||||
//-----------------PEOPLE----------------------------------------
|
||||
let people =
|
||||
[
|
||||
{
|
||||
"name": "wizard",
|
||||
"emoji": "🧙",
|
||||
"life": 3
|
||||
},
|
||||
{
|
||||
"name": "woman",
|
||||
"emoji": "🧝",
|
||||
"life": 3
|
||||
},
|
||||
{
|
||||
"name": "man",
|
||||
"emoji": "🧔",
|
||||
"life": 3
|
||||
},
|
||||
{
|
||||
"name": "woman",
|
||||
"emoji": "👵",
|
||||
"life": 3
|
||||
},
|
||||
{
|
||||
"name": "man",
|
||||
"emoji": "👴",
|
||||
"life": 3
|
||||
},
|
||||
{
|
||||
"name": "person",
|
||||
"emoji": "🧓",
|
||||
"life": 3
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//----------------create zone---------------
|
||||
|
||||
let buildings = ['🏛️','⛺']
|
||||
|
||||
let landscapes = ['🏔️''','🌿','🌱','🌾','🌻','🌵']
|
||||
|
||||
let plants = ['🌹','🌺','🌻','🌼','🌷','🎋']
|
||||
|
||||
let shrines = ['⛩️','🗿']
|
||||
|
||||
let items = ['🍄','🌰','
|
||||
|
||||
|
||||
|
||||
|
||||
let debug = () => {
|
||||
//console.log(dungeon)
|
||||
console.log("terminal width: "+process.stdout.columns+" height: "+process.stdout.rows);
|
||||
|
@ -146,8 +224,15 @@ let createTerrain = () => {
|
|||
|
||||
let dungeonWithItemsToStrings = () => {
|
||||
|
||||
//specify player location
|
||||
dungeon[player.position.y][player.position.x] = player.avatar;
|
||||
|
||||
//specify item location
|
||||
//
|
||||
//for (let i = 0; i < items.length; i++){
|
||||
// dungeon[item[i].position.y][item[i].position.x] = item[i].icon;
|
||||
//}
|
||||
|
||||
let dungeonStr = "";
|
||||
for (let i = 0; i < height; i++){
|
||||
dungeonStr+=(dungeon[i].join("")+"\n");
|
||||
|
@ -160,19 +245,41 @@ let drawDungeon = dungeonStr => {
|
|||
console.log(dungeonStr); //display
|
||||
}
|
||||
|
||||
let writeToFile = dungeonStr => {
|
||||
fs.writeFileSync(dungeonFile, dungeonStr); //save to disk
|
||||
let writeToFile = dungeonStr => { //save to disk
|
||||
fs.writeFileSync(dungeonFile, dungeonStr);
|
||||
|
||||
let playerData = JSON.stringify(player);
|
||||
fs.writeFileSync(gameFile, playerData); //save to disk
|
||||
fs.writeFileSync(gameFile, playerData);
|
||||
|
||||
fs.appendFileSync(dateFile, today+'\n');
|
||||
}
|
||||
|
||||
let checkDay = () => {
|
||||
const savedDays = fs.readFileSync(dateFile).toString().split("\n");;
|
||||
const lastDay = savedDays[savedDays.length-2]; //loads day last played
|
||||
console.log("Last movement: "+lastDay);
|
||||
|
||||
const fullDate = new Date();
|
||||
today = fullDate.getFullYear()+"-"+fullDate.getMonth()+"-"+fullDate.getDate();
|
||||
|
||||
console.log("Today: "+today);
|
||||
|
||||
if (lastDay === today){
|
||||
//console.log('already moved today');
|
||||
} else {
|
||||
player.movedToday = false
|
||||
}
|
||||
}
|
||||
|
||||
let main = () => {
|
||||
checkDay();
|
||||
parseArgs();
|
||||
|
||||
let dungeonStr = dungeonToStrings();
|
||||
writeToFile(dungeonStr);
|
||||
|
||||
createTerrain(); //do this after writing to file
|
||||
|
||||
let dungeonWithItems = dungeonWithItemsToStrings();
|
||||
drawDungeon(dungeonWithItems);
|
||||
|
||||
|
|
Loading…
Reference in New Issue