You could always just do the lonely take of an '@' symbol trying to escape out the right side of a dungeon.
#include <curses.h>
#include <time.h>
#include <stdlib.h>
main() {
char map[10][15];
keypad(initscr(),1);
int y=1;
int x=1;
int c;
srand(time(NULL));
for(int yy=0;yy<10;yy++)
for(int xx=0;xx<15;xx++)
map[yy][xx]=((yy!=0)&&(yy!=9)&&(xx!=0)&&(xx!=14)&&(rand()%4))?' ':'*';
map[rand()%8+1][14] = ' ';
while((x!=14) && ('q'!=(c=getch()))){
for(int yy=0;yy<10;yy++)
for(int xx=0;xx<15;xx++)
mvaddch(yy,xx,map[yy][xx]);
if(KEY_UP==c && ' '==map[y-1][x]) y--;
if(KEY_DOWN==c && ' '==map[y+1][x]) y++;
if(KEY_LEFT==c && ' '==map[y][x-1]) x--;
if(KEY_RIGHT==c && ' '==map[y][x+1]) x++;
mvaddch(y,x,'@');
}
}
I should improve the dungeon generation. I can't take credit for most of that. I reduced a pre-defined map to three lines that make a random pattern, added a winning condition, and in the end reduced the game from 902 chars to 713. But there's no guarantee you can make it to the end the way it's written.
You may think this sort of thing is silly, but it's an excellent proof of concept sort of thing, gives you a little satisfaction. Something stupid you can show off that no one has much expectations for.