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 p

⟦20c0a91ef⟧ TextFile

    Length: 2128 (0x850)
    Types: TextFile
    Names: »print_shape.c«

Derivation

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

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
**
*/
/* Tetris: print_shape.c                                                  */
/*                                                                        */
/* this is the function that draws the shapes on the screen.              */
/* Normally the shape is drawn using the color provided in the            */
/* structure "shape". But calling this function with a color of ' '       */
/* will effectively erase shapes as well.                                 */
#include "tetris.h"

void print_shape(shape_number, x, y, rot, ch)
int shape_number, x, y, rot;
char ch;
{
	if (y > 1) {
		if (shape[shape_number].table[0][rot] & 8)
			mvaddch(y,x,ch);
		if (shape[shape_number].table[0][rot] & 4)
			mvaddch(y,x+1,ch);
		if (shape[shape_number].table[0][rot] & 2)
			mvaddch(y,x+2,ch);
		if (shape[shape_number].table[0][rot] & 1)
			mvaddch(y,x+3,ch);
	}

	if (y > 0) {
		if (shape[shape_number].table[1][rot] & 8)
			mvaddch(y+1,x,ch);
		if (shape[shape_number].table[1][rot] & 4)
			mvaddch(y+1,x+1,ch);
		if (shape[shape_number].table[1][rot] & 2)
			mvaddch(y+1,x+2,ch);
		if (shape[shape_number].table[1][rot] & 1)
			mvaddch(y+1,x+3,ch);
	}
	if (y > -1) {
		if (shape[shape_number].table[2][rot] & 8)
			mvaddch(y+2,x,ch);
		if (shape[shape_number].table[2][rot] & 4)
			mvaddch(y+2,x+1,ch);
		if (shape[shape_number].table[2][rot] & 2)
			mvaddch(y+2,x+2,ch);
		if (shape[shape_number].table[2][rot] & 1)
			mvaddch(y+2,x+3,ch);
	}

	if (y > -2) {
		if (shape[shape_number].table[3][rot] & 8)
			mvaddch(y+3,x,ch);
		if (shape[shape_number].table[3][rot] & 4)
			mvaddch(y+3,x+1,ch);
		if (shape[shape_number].table[3][rot] & 2)
			mvaddch(y+3,x+2,ch);
		if (shape[shape_number].table[3][rot] & 1)
			mvaddch(y+3,x+3,ch);
	}

	if (ch != ' ' || fast_drop) 
		csr_draw((y>2) ? y-1 : 2,x-3,y+4,x+7);
}