テトリス

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

#define BOARD_WIDTH 10
#define BOARD_HEIGHT 20

#define PIECE_WIDTH 4
#define PIECE_HEIGHT 4

int board[BOARD_HEIGHT][BOARD_WIDTH] = {0};
int piece[PIECE_HEIGHT][PIECE_WIDTH] = {0};

int piece_x = 0;
int piece_y = 0;

void draw_board()
{
   int i, j;
   for (i = 0; i < BOARD_HEIGHT; i++) {
       for (j = 0; j < BOARD_WIDTH; j++) {
           if (board[i][j] != 0) {
               printf("[]");
           } else {
               printf("  ");
           }
       }
       printf("\n");
   }
}

void draw_piece()
{
   int i, j;
   for (i = 0; i < PIECE_HEIGHT; i++) {
       for (j = 0; j < PIECE_WIDTH; j++) {
           if (piece[i][j] != 0) {
               printf("[]");
           } else {
               printf("  ");
           }
       }
       printf("\n");
   }
}

void move_piece_down()
{
   piece_y++;
}

void move_piece_left()
{
   piece_x--;
}

void move_piece_right()
{
   piece_x++;
}

void rotate_piece()
{
   int tmp[PIECE_HEIGHT][PIECE_WIDTH] = {0};
   int i, j;
   for (i = 0; i < PIECE_HEIGHT; i++) {
       for (j = 0; j < PIECE_WIDTH; j++) {
           tmp[j][PIECE_HEIGHT-1-i] = piece[i][j];
       }
   }
   for (i = 0; i < PIECE_HEIGHT; i++) {
       for (j = 0; j < PIECE_WIDTH; j++) {
           piece[i][j] = tmp[i][j];
       }
   }
}

int check_collision()
{
   int i, j;
   for (i = 0; i < PIECE_HEIGHT; i++) {
       for (j = 0; j < PIECE_WIDTH; j++) {
           if (piece[i][j] != 0 && board[piece_y+i][piece_x+j] != 0) {
               return 1;
           }
       }
   }
   return 0;
}

void place_piece()
{
   int i, j;
   for (i = 0; i < PIECE_HEIGHT; i++) {
       for (j = 0; j < PIECE_WIDTH; j++) {
           if (piece[i][j] != 0) {
               board[piece_y+i][piece_x+j] = piece[i][j];
           }
       }
   }
}

void generate_piece()
{
   static int pieces[7][4][4] = {
       {
           {0,0,0,0},
           {1,1,1,1},
           {0,0,0,0},
           {0,0,0,0}

この記事が気に入ったらサポートをしてみませんか?