2015-09-01 10 views
0

Я делаю игру Cetris Tetris для своего класса программирования и пишу сейчас. Я работаю над отображением ведра и сбрасыванием штук в ведро, но я еще не двигаю части в ведро. Я могу успешно создать программу, но когда программа запущена, ничего не отображается.C++ Tetris Программный ковш не отображается

Кроме того, я не уверен, как я смогу анимировать падение кусков в ведро.

Вот что у меня есть.

#include "stdafx.h" 
#include <iostream> 
#include <Windows.h> 
#include <cstdlib> 
#include <time.h> 


using namespace std; 

class TetrisShape{ 
public: 
    int shapeTopLeftX; 
    int shapeTopLeftY; 
    TetrisShape(){ 
     shapeTopLeftX = 6; 
     shapeTopLeftY = 0; 
    } 
    char shapeArray[4][4]; 
    void populateShapeArray(int shapeType){ 
     switch(shapeType){ 
     case 1: 
      shapeArray[0][0] = ' '; shapeArray[1][0] = 'X'; shapeArray[2][0] = ' '; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = ' '; shapeArray[1][1] = 'X'; shapeArray[2][1] = ' '; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = ' '; shapeArray[1][2] = 'X'; shapeArray[2][2] = 'X'; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = ' '; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     case 2: 
      shapeArray[0][0] = ' '; shapeArray[1][0] = 'X'; shapeArray[2][0] = ' '; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = ' '; shapeArray[1][1] = 'X'; shapeArray[2][1] = ' '; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = ' '; shapeArray[1][2] = 'X'; shapeArray[2][2] = ' '; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = 'X'; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     case 3: 
      shapeArray[0][0] = ' '; shapeArray[1][0] = 'X'; shapeArray[2][0] = 'X'; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = ' '; shapeArray[1][1] = 'X'; shapeArray[2][1] = 'X'; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = ' '; shapeArray[1][2] = ' '; shapeArray[2][2] = ' '; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = ' '; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     case 4: 
      shapeArray[0][0] = ' '; shapeArray[1][0] = 'X'; shapeArray[2][0] = 'X'; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = 'X'; shapeArray[1][1] = 'X'; shapeArray[2][1] = ' '; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = ' '; shapeArray[1][2] = ' '; shapeArray[2][2] = ' '; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = ' '; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     case 5: 
      shapeArray[0][0] = 'X'; shapeArray[1][0] = 'X'; shapeArray[2][0] = ' '; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = ' '; shapeArray[1][1] = 'X'; shapeArray[2][1] = 'X'; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = ' '; shapeArray[1][2] = ' '; shapeArray[2][2] = ' '; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = ' '; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     case 6: 
      shapeArray[0][0] = ' '; shapeArray[1][0] = 'X'; shapeArray[2][0] = ' '; shapeArray[3][0] = ' '; 
      shapeArray[0][1] = ' '; shapeArray[1][1] = 'X'; shapeArray[2][1] = ' '; shapeArray[3][1] = ' '; 
      shapeArray[0][2] = 'X'; shapeArray[1][2] = 'X'; shapeArray[2][2] = ' '; shapeArray[3][2] = ' '; 
      shapeArray[0][3] = ' '; shapeArray[1][3] = ' '; shapeArray[2][3] = ' '; shapeArray[3][3] = ' '; 
      break; 
     } 
    } 
}; 

const int width = 12; 
const int height = 25; 
char bucket [height][width] ={'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','x', 
           'x','x','x','x','x','x','x','x','x','x','x','x', 

}; 



void setCursorTo(int x, int y){ 
    HANDLE handle; 
    COORD position; 
    handle = GetStdHandle(STD_OUTPUT_HANDLE); 
    position.X = x; 
    position.Y = y; 
    SetConsoleCursorPosition(handle, position); 
} 

void drawBucket(){ 
    setCursorTo(0,0); 
     for(int x = 0; x <= height; x++){ 
      int a = width; 
      a = width; 
      int b = width; 
      for(int y = 0; y < a; y++){ 
       cout<<bucket[x][y]; 



      } 
      if(b == width){ 
       cout<<bucket[x][b]<<endl; 
      } 


     } 
} 

void updateBucket(TetrisShape localTetrisShape){ 
    int shapeTopLeftX = 6; 
    int shapeTopLeftY = 0; 
    for(int i = 0; i < 4; i++){ 
     for(int j = 0; j < 4; j++){ 
     bucket[shapeTopLeftX+i][shapeTopLeftY+j] = localTetrisShape.shapeArray[i][j]; 
     } 
    } 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    TetrisShape shape; 
    int gameOver = 0; 

    while(gameOver == 0){ 
     void drawBucket(); 
     srand(time(NULL)); 
     int number = rand() % 6 + 1; 
     shape.populateShapeArray(number); 
     updateBucket(shape); 
     int newshapeTopLeftY = shape.shapeTopLeftY + 1; 

    } 

    return 0; 
} 

Спасибо заранее.

+0

использовать отладчик. – Amit

+2

void drawBucket(); вы имели в виду просто «drawBucket()»; в цикле? – ataman

ответ

0

Как @ataman имеет (более или менее) отметил в комментариях, вы на самом деле не звоните drawBucket() функцию в while цикли: вы повторное объявление функции с именем drawBucket(). Это совершенно верно, потому что оно находится в другом объеме; однако, вероятно, это не то, что вы намереваетесь.

Изменить петлю на:

while(gameOver == 0){ 
    drawBucket(); 
    ... 
}