dungeonfile.txt

This commit is contained in:
lee2sman 2021-03-07 03:41:26 -05:00
parent 69ffd510b6
commit 2f174161f1
2 changed files with 142 additions and 34 deletions

View File

@ -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
View File

@ -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);