DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T g

⟦2901f1517⟧ TextFile

    Length: 3558 (0xde6)
    Types: TextFile
    Names: »get_level.c.orig«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Tetris/get_level.c.orig« 

TextFile

/*
** written by adam margulies vespa@ssyx.ucsc.edu
**                           {...}!ucbvax!ucscc!ssyx!vespa
**
** permission is granted to freely distribute this code provided that you:
**
** 1) don't charge for it
** 2) leave my name and header on it
** 3) clearly document your changes and place your name on them
**
*/
/* get_level.c	
**
** Gets the level the user prefers to start on and also gets the users 
** preference on "rubble" and generates the "rubble". Rubble is random
** stuff put on the playing field to spice up the game at the beginning.
*/
#include "tetris.h"

void get_level()	
{
	int i;
	save_screen(5,19,16,62);
	clear(5,19,16,62);

	mvaddstr(05,19, "+-----------------------------------------+");
	mvaddstr(06,19, "| Starting level:                         |");
	mvaddstr(15,19, "|    [hjkl] to move, [space] to toggle    |");
	for(i=7; i<15; i++)
		mvaddstr(i,19,"|                                         |");
	mvaddstr(11,19, "| Rows of obstacles:                      |");
	mvaddstr(16,19,"+-----------------------------------------+");

	mvaddstr(07,21,"**** **** **** **** **** **** **** ****");
	mvaddstr(08,21,"*00* *01* *03* *05* *07* *09* *11* *13*");
	mvaddstr(09,21,"**** **** **** **** **** **** **** ****");

	mvaddstr(12,21,"**** **** **** **** **** **** **** ****");
	mvaddstr(13,21,"*00* *01* *03* *05* *07* *09* *11* *13*");
	mvaddstr(14,21,"**** **** **** **** **** **** **** ****");

	read_input();

	restore_screen(5,19,16,62);

}

read_input()
{
	int x = 0;
	int y = 8;
	char c;
	
	mvaddstr(7, 21, "++++");
	mvaddch(8, 21, '+');
	mvaddch(8, 24, '+');
	mvaddstr(9, 21, "++++");

	mvaddstr(12, 21,"++++");
	mvaddch(13,21, '+');
	mvaddch(13,24, '+');
	mvaddstr(14, 21,"++++");
	csr_draw(5,19,16,62);

	csr(y, 23 + (x*5));

	while(1){
		c = getchar();
		switch(c) {
			case 'h':
				x -= 1;
				x = (x<0 ? 7 : x);
				csr(y, 23 + (x*5));
				break;
			case 'l':
				x += 1;
				x = (x>7 ? 0 : x);
				csr(y, 23 + (x*5));
				break;
			case 'j':
				y = (y==8 ? 13 : 8);
				csr(y, 23 + (x*5));
				break;
			case 'k':
				y = (y==8 ? 13 : 8);
				csr(y, 23 + (x*5));
				break;
			case ' ': 
				mvaddstr((y == 8 ? 7 : 12), 21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5),"****");
				mvaddch((y == 8 ? 8 : 13),21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5), '*');
				mvaddch((y == 8 ? 8 : 13),24 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5), '*');
				mvaddstr((y == 8 ? 9 : 14), 21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5),"****");
				csr_draw((y == 8 ? 7 : 12),21 + ((y == 8 ?
					(level+1)/2 : (rubble+1)/2)*5),
					(y == 8 ? 9 : 14), 24 + ((y == 8 ?
					(level+1)/2 : (rubble+1)/2)*5));
				if(y == 8)
					level = (x == 0 ? 0 : (2*x) - 1);
				else
					rubble = (x == 0 ? 0 : (2*x) - 1);
				mvaddstr((y == 8 ? 7 : 12), 21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5),"++++");
				mvaddch((y == 8 ? 8 : 13),21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5), '+');
				mvaddch((y == 8 ? 8 : 13),24 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5), '+');
				mvaddstr((y == 8 ? 9 : 14), 21 +
					((y == 8 ? (level+1)/2 : (rubble+1)/2)*5),"++++");
				csr_draw((y == 8 ? 7 : 12),21 + ((y == 8 ?
					(level+1)/2 : (rubble+1)/2)*5),
					(y == 8 ? 9 : 14), 24 + ((y == 8 ?
					(level+1)/2 : (rubble+1)/2)*5));
				csr(y, 23 + (x*5));
				break;	
			default:
				return;
		}
	}
}

make_rubble()
{
	int i,j;
	char color[8];

	strcpy(color, "#$%@&*+");

	for(i=21; i>21-rubble; i--) 
		for(j=35; j<45; j++) 
			if((random() % 100) > 60)
				mvaddch(i,j,color[(random() % 7)]);
}