示例#1
0
文件: main.c 项目: dougblack/tetris
void placeKey() {
  for (int x = 0; x < 4; x++) {
    for (int y = 0; y < 4; y++) {
      if (key.t[x*4+y] == 1) {
        if (key.r+x <=4)
          gameOver();
        matrix[key.r+x][key.c+y] = 1;
        colorMatrix[key.r+x][key.c+y] = key.color;
      }
    }
  }
  checkForScore();
  key.t = next.t;
  key.color = next.color;
  key.r = 0;
  key.c = 3;
  int nextType = qran_range(0,7);
  int *n;
  n = tetriminos[nextType];
  next.t = n;
  next.color = colors[nextType];
  drawMatrix();
  setNextPiece(next);
  droppedYet = 0;
}
示例#2
0
void Guy::Update() {
	if (isActive) {
		if (sprite->x > 240 || sprite->x < 0 || sprite->y > 180) {
			if (sprite->x != start_pos_x) {
				if (sprite->x > 240)
					saved++;
				else
					lost++;
			}

			speed = float(qran_range(2, 4) / difficulty);
			force = 0.2f;

			sprite->x = start_pos_x;
			sprite->y = start_pos_y;

			sprite->show();
			sprite->rotate(2);
		}

		force += 0.1f;
		sprite->x += int (speed);
		sprite->y += int (force);
	}
	else {
		sprite->hide();
		//rotationEnable();
	}
};
示例#3
0
文件: main.c 项目: dougblack/tetris
/* ===============================
 * BOARD SETUP
 * =============================== */
void setupBoard() { 
  REG_DISPCTL = MODE3 | BG2_ENABLE;
  int tetType = qran_range(0,7);
  int nextType = qran_range(0,7);
  int *t;
  int *n;
  t = tetriminos[tetType];
  n = tetriminos[nextType];

  // Generate random tetrimino to start falling and
  // generate random tetrimino to show as next tetrmino
  key.t = t;
  next.t = n;
  next.color = colors[nextType];
  key.color = colors[tetType];

  key.r = 0;
  key.c = 3;
  keyLastR = 0;
  keyLastC = 3;

  for (int i = 0; i < 16; i++) {
    keyLastT[i] = key.t[i];
  }


  /* Draw back screen */
  dma_mem[3].cnt = 0;
  u16 *black = BLACK;
  dma_mem[3].src = black;
  dma_mem[3].dst = videoBuffer;
  dma_mem[3].cnt = 38400 | DMA_ON | DMA_SOURCE_FIXED;

  /* Draw board and pieces */
  drawMatrixBorders();
  setNextPiece(next);
}