Code:
#include <curses.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define UP 3
#define DOWN 2
#define RIGHT 5
#define LEFT 4
#define P 6
#define LEN 18
void dispMap(int x, int y, char map[][LEN])
{
int row,col;
for(row=0;row<LEN;row++)
{
for(col=0;col<LEN;col++)
{
mvaddch(row+1,col+1,map[row][col]);
}
}
mvaddch(y+1,x+1,'@');
}
int main(void)
{
char map[][LEN]={" ---------------- ",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
"| |",
" ---------------- "
};
keypad(initscr(),TRUE);
curs_set(0);
int xPos=1;
int yPos=1;
int p;
char c='\0';
mvprintw(20,2,"Drawing Field of Play");
mvprintw(21,2,"Press P to Toggle Pen");
mvprintw(22,2,"Press Q to Quit Drawing");
mvprintw(23,2,"Pen Down");
while(c!='q')
{
mvprintw(23,2,"Pen Down");
dispMap(xPos,yPos,map);
c=getch();
while (c=='p')
{
mvprintw(23,2,"Pen Up ");
c=getch();
enum{off,on}p;
p==on;
if (p)
switch(c)
{
case UP:
if (map[yPos-1][xPos]== ' ')
{
yPos--;
c=p;
}
else if (map[yPos-1][xPos]== '#')
{
yPos--;
c=p;
}
break;
case DOWN:
if (map[yPos+1][xPos]== ' ')
{
yPos++;
c=p;
}
else if (map[yPos+1][xPos]== '#')
{
yPos++;
c=p;
}
break;
case LEFT:
if (map[yPos][xPos-1]== ' ')
{
xPos--;
c=p;
}
else if (map[yPos][xPos-1]== '#')
{
xPos--;
c=p;
}
break;
case RIGHT:
if (map[yPos][xPos+1]== ' ')
{
xPos++;
c=p;
}
else if (map[yPos][xPos+1]== '#')
{
xPos++;
c=p;
}
}
// 'p'==off;
// if ('p')
// {
// getchar();
// }
}
switch(c)
{
case UP:
if (map[yPos-1][xPos]== ' ')
{
map[yPos][xPos]='#';
yPos--;
}
else if (map[yPos-1][xPos]== '#')
{
map[yPos][xPos]='#';
yPos--;
}
break;
case DOWN:
if (map[yPos+1][xPos]== ' ')
{
map[yPos][xPos]='#';
yPos++;
}
else if (map[yPos+1][xPos]== '#')
{
map[yPos][xPos]='#';
yPos++;
}
break;
case LEFT:
if (map[yPos][xPos-1]== ' ')
{
map[yPos][xPos]='#';
xPos--;
}
else if (map[yPos][xPos-1]== '#')
{
map[yPos][xPos]='#';
xPos--;
}
break;
case RIGHT:
if (map[yPos][xPos+1]== ' ')
{
map[yPos][xPos]='#';
xPos++;
}
else if (map[yPos][xPos+1]== '#')
{
map[yPos][xPos]='#';
xPos++;
}
}
}
// while (c=='p')
// {
//
// dispMap(xPos,yPos,map);
// c=getch();
// mvprintw(23,2,"Pen Up ");
//
// enum button{on,off}p;
// {
// p=on;
// if (p)
// {
// mvprintw(23,2,"Pen Up ");
// dispMap(xPos,yPos,map);
// c=getch();
// mvaddch(yPos,xPos,' ');
// switch(c)
// {
// case UP:
// if (map[yPos-1][xPos]== ' ')
// {
// yPos--;
// }
// break;
// case DOWN:
// if (map[yPos+1][xPos]== ' ')
// {
// yPos++;
// }
// break;
// case LEFT:
// if (map[yPos][xPos-1]== ' ')
// {
// xPos--;
// }
// break;
// case RIGHT:
// if (map[yPos][xPos+1]== ' ')
// {
// xPos++;
// }
// }
// p==off;
// if(!p)
// {
// mvprintw(23,2,"Pen Down");
// }
// getchar();
//
// }
endwin();
}
Cheers!