Exemplo n.º 1
0
char *
getpass (const char * prompt, char * str)
{
    int maxlength = str[0];
    int length = 0;
    int ch = 0;
    int x, y;

    cputs(prompt);
    __fill_text_info();
    x = __text_info.curx;
    y = __text_info.cury;

    while (ch != '\r') {
        ch = getch();
        switch (ch) {
            case '\r' : /* enter */
                break;
            case '\b' : /* backspace */
                if (length > 0) putchxy (x + --length, y, ' ');
                gotoxy (x + length, y);
                break;
            default:
                if (length < maxlength) {
                    putchxy (x + length, y, '*');
                    str[2 + length++] = ch;
                }
        }
    }
    
    str[1] = length;
    str[2 + length] = '\0';
    return &str[2];
}
Exemplo n.º 2
0
void DrawStage() { //x, y는 스테이지내의 좌표

	int x, y;

	for (y = 0; y < 18; y++) {
		for (x = 0; x < 20; x++) {
			putchxy(x,y,stage[y][x]);
		}
	}

	putchxy(Rx, Ry, '@');

}
Exemplo n.º 3
0
void DrawStage(void)
{
	int stagex, stagey;

	for (stagey = 0; stagey < 18; stagey++)
	{
		for (stagex = 0; stagex < 20; stagex++)
		{
			putchxy(stagex, stagey, stage[stagey][stagex]);
		}
	}

	putchxy(Roundx,Roundy,'@');
}
Exemplo n.º 4
0
void full_refresh(char *screenmap, struct symbol symbols[256]){
	for (int y=0; y < info.screenheight-1; y++){	
		for (int x=0; x < info.screenwidth; x++){
			unsigned char out = screenmap[y*(info.screenwidth+1)+x];
			if(15 < x && x < info.screenwidth-1 && 
					0 < y && y < info.screenheight-2){
				textcolor(symbols[out].color);
				putchxy(x+1, y+1, symbols[out].character);
			} else {
				textcolor(LIGHTGRAY);
				putchxy(x+1, y+1, out);
			}
			//printf("%s", screenmap[y]);
		}
	}
	gotoxy(0,0);
}
Exemplo n.º 5
0
void draw_creatures(struct creature* critters){
	struct creature * cr = critters;
	while(NULL!=cr){
		textcolor(cr->sym.color);
		putchxy(cr->x, cr->y, cr->sym.character);
		cr = cr->next;
	}

}
Exemplo n.º 6
0
void erase_creatures(struct creature * critters, char * screenmap, struct symbol symbols[256]) {
	struct creature * cr = critters;
	while(NULL!=cr){
		unsigned char out = screenmap[(cr->y-1)*(info.screenwidth+1)+cr->x-1];
		textcolor(symbols[out].color);
		putchxy(cr->x, cr->y, symbols[out].character);
		cr = cr->next;
	}

}
Exemplo n.º 7
0
void LoadingStage(void)
{
	int i;

	for (i = 0; i < 45; i++)
	{
		putchxy(10+i,5,'-');
		delay(10);
	}
	for (i = 0; i < 45; i++)
	{
		putchxy(70-i,11,'-');
		delay(10);
	}

	delay(800);
	gotoxy(35,7);
	printf("So");
	delay(600);
	gotoxy(38,7);
	printf("ko");
	delay(600);
	gotoxy(41,7);
	printf("ban");
	delay(600);
	putchxy(48,8,'M');
	delay(40);
	putchxy(49,8,'a');
	delay(40);
	putchxy(50,8,'d');
	delay(40);
	putchxy(51,8,'e');
	delay(40);
	putchxy(53,8,'b');
	delay(40);
	putchxy(54,8,'y');
	delay(40);
	gotoxy(56,8);
	printf("Skout");
	delay(200);
	gotoxy(37,9);
	printf("Ported & Modified by ikh");

	delay(2500);
}
Exemplo n.º 8
0
void LoadingStage() { //로딩창

	int i;

	for (i = 0; i < 45; i++) {
		putchxy(10 + i, 5, '-');
		delay(10);
	}

	for (i = 0; i < 45; i++) {
		putchxy(70 - i, 10, '-');
		delay(10);
	}

	delay(800);

	gotoxy(35, 7);
	printf("P");
	delay(600);

	gotoxy(37, 7);
	printf("U");
	delay(600);

	gotoxy(39, 7);
	printf("S");
	delay(600);

	gotoxy(41, 7);
	printf("H");
	delay(600);

	putchxy(48, 8, 'M');
	delay(40);

	putchxy(49, 8, 'I');
	delay(40);

	putchxy(50, 8, 'N');
	delay(40);

	putchxy(51, 8, 'I');
	delay(40);

	putchxy(52, 8, 'G');
	delay(40);

	putchxy(53, 8, 'A');
	delay(40);

	putchxy(54, 8, 'M');
	delay(40);

	putchxy(55, 8, 'E');
	delay(40);

	gotoxy(57, 8);
	printf("프");
	delay(60);

	gotoxy(59, 8);
	printf("로");
	delay(60);

	gotoxy(61, 8);
	printf("젝");
	delay(60);

	gotoxy(63, 8);
	printf("트");


	delay(2500);

	/*gotoxy(59, 8);
	printf("프로젝트");
	delay(2500);
	*/
}
Exemplo n.º 9
0
static inline void draw_creature(struct creature * creature) {
	textcolor(creature->sym.color);
	putchxy(creature->x, creature->y, creature->sym.character);
}
Exemplo n.º 10
0
void roguelike() {
	enum { KEY_ESC = 27, KEY_ENTER = '\r', KEY_BACKSPACE = 8, 
		CTRL_S = 19, CTRL_P = 16, CTRL_Q = 17, CTRL_B = 2,
		KEY_UP = 72, KEY_DOWN = 80, KEY_LEFT = 75, KEY_RIGHT = 77};	
	

	char screenmap[info.screenheight][info.screenwidth+1]; //y then x
	memset(screenmap, ' ', (info.screenwidth+1)*info.screenheight);

	struct creature * critters = create_creature("playa", '@', LIGHTGRAY, 16+((info.screenwidth-16)/2), info.screenheight/2);
	struct creature * head = critters;
	head->next = create_creature("monsu", 'M', RED, 16+20, 20);

	/* store player for convenience*/
	struct creature * player = critters;

	
	//construct terrain
//	for (int i = 0; i <2; i++){
//		terrain[i].character = symbols[i][0];
//		terrain[i].color = symbols[i][1];
//	}
	for (int i = 3; i <256; i++){
		// zero unused values
		//
		terrain[i].name="undefined";
		terrain[i].character = 0;
		terrain[i].color = 0;

	}


	int val; // getch value 
	clrscr();
	char * title[] = {"Roguelike", "Press Any Key"};
	for (int i=0; i!=2; i++){
		gotoxy((info.screenwidth-(strchr(title[i], '\0')-title[i]))/2, -3+i+info.screenheight/2);
		printf("%s", title[i]);
	}
	getch();
	clrscr();
	
	for (int i = 0; i < info.screenheight-1; i++){
		screenmap[i][15] = '|';
		screenmap[i][0] = '*';
		screenmap[i][info.screenwidth-1] = '*';
		screenmap[i][info.screenwidth]='\0';
	}
	for (int i = 0; i < info.screenwidth; i++){
		screenmap[0][i] = '*';
		screenmap[info.screenheight-2][i] = '*';		
	}
	//let's make a lawn
	
	for (int y=1; y < info.screenheight-2; y++) {
		for (int x=16; x < info.screenwidth-1; x++) {
			screenmap[y][x] = (90 < rand() % 100) ? WATER : GRASS;
		}
	}
	// a wall.... 
	//
	
	for (int x=20; x<30;x++){
		screenmap[5][x] = WALL;
		screenmap[15][x] = WALL;
	} 
	for (int y=5; y<15;y++){
		screenmap[y][20] = WALL;
		screenmap[y][30] = WALL;
	} 

	textcolor(WHITE);
	full_refresh(&screenmap[0][0], terrain);
	draw_creatures(head);
	gotoxy(0,0);
	_setcursortype(_NOCURSOR);
	_setcursortype(0);
	while((val=getch())!=CTRL_Q) {
		erase_creatures(head, &screenmap[0][0], terrain);
		player = handle_input(val, player, (char *)screenmap);
		head = update_creature_position(head, player->name, player->x, player->y);
		draw_creatures(head);
		textcolor(WHITE);		
		putchxy(2, 2, ':');
		printf("Test");
		_setcursortype(_NOCURSOR);
		_setcursortype(0);
    }
	_setcursortype(_NORMALCURSOR);
	textcolor(YELLOW);
}
Exemplo n.º 11
0
/* Explode a ponte dos menus estáticos. Só funciona neles e para eles */
void explodePonte(TGraphs g) {
	TExplo expl[EXPLO_MAX];
	int n_expl = 0;

	struct char_info info;

    int i, delay = 0;

    expl[n_expl].x = 39;
    expl[n_expl].y = 3;
    expl[n_expl].nivel = 1;
    expl[n_expl].tempo = 0;
    n_expl++;
	//Processa as explosões
	while(delay < TEMPO_EXPLO * 20) {
		Sleep(1);
		i = 0;
	    while(i < n_expl) {
			textcolor(g.explocor);
			putchxy(expl[i].x, expl[i].y, g.explo);
	       	if(expl[i].tempo == TEMPO_EXPLO/4) {
	       		//Cria novas explosões ao redor
	       		//A esquerda
	       		gettext(expl[i].x-1, expl[i].y, expl[i].x-1, expl[i].y, &info);
	       		if(info.letter != 'T' && info.letter != g.mapa.roadc && info.letter != g.mapa.vegc && info.letter != g.explo) {
	       			if(info.letter != g.mapa.aguac) {
						expl[n_expl] = addExplo(expl[i].x-1, expl[i].y, 1);
		       			if(n_expl < EXPLO_MAX)
		       				n_expl++;
	       			} else if(expl[i].nivel > 0) {
	       				expl[n_expl] = addExplo(expl[i].x-1, expl[i].y, 0);
		       			if(n_expl < EXPLO_MAX)
		       				n_expl++;
	       			}
	       		}

	       		//A direita
	       		gettext(expl[i].x+1, expl[i].y, expl[i].x+1, expl[i].y, &info);
	       		if(info.letter != 'T' && info.letter != g.mapa.roadc && info.letter != g.mapa.vegc && info.letter != g.explo) {
	       			if(info.letter != g.mapa.aguac) {
	       				expl[n_expl] = addExplo(expl[i].x+1, expl[i].y, 1);
		       			if(n_expl < EXPLO_MAX)
		       				n_expl++;
	       			} else if(expl[i].nivel > 0) {
	       				expl[n_expl] = addExplo(expl[i].x+1, expl[i].y, 0);
		       			if(n_expl < EXPLO_MAX)
		       				n_expl++;
	       			}
	       		}

	       		//Acima
	       		gettext(expl[i].x, expl[i].y-1, expl[i].x, expl[i].y-1, &info);
	       		if(info.letter != 'T' && info.letter != g.mapa.roadc && info.letter != g.mapa.vegc && info.letter != g.explo && expl[i].nivel > 0) {
	       			expl[n_expl] = addExplo(expl[i].x, expl[i].y-1, 0);
		       		if(n_expl < EXPLO_MAX)
		       			n_expl++;
	       		}

	       		//Abaixo
	       		gettext(expl[i].x, expl[i].y+1, expl[i].x, expl[i].y+1, &info);
	       		if(info.letter != 'T' && info.letter != g.mapa.roadc && info.letter != g.mapa.vegc && info.letter != g.explo && expl[i].nivel > 0) {
	       			expl[n_expl] = addExplo(expl[i].x, expl[i].y+1, 0);
		       		if(n_expl < EXPLO_MAX)
		       			n_expl++;
	       		}
		  	}
	       	expl[i].tempo++;
	       	if(expl[i].tempo >= TEMPO_EXPLO) {
	       		textcolor(g.mapa.agua);
	       		putchxy(expl[i].x, expl[i].y, g.mapa.aguac);
	       		n_expl--;
	       		expl[i] = expl[n_expl];
	       		i--;
	       	}
	       	i++;
	    }
	    delay++;
	}
}