2014-01-09 19 views
0

У меня проблемы с пониманием концепции переменной области. Что приемлемо и что неприемлемо? Я знаю, что я пропустил все графики, связанные коды, и я знаю, что у меня есть бесконечный цикл игры, но иметь со мной:вопрос относительно переменной области

#include "LList.h" 
#include "Snake.h" 
#undef main 



int main() 
{ 

float dt;    // time since last update. 
int start_time; 
bool paused = false; 
float originalTime = 1.0f; 
float timer = originalTime; 
Snake p1Snake(10, false); 



    // Start the 'stopwatch' 
    start_time = SDL_GetTicks(); 

    /////////////////////// 
    // The 'game loop' // 
    /////////////////////// 
    while (!done) 
    { 
     ////////////////////// 
     // Update variables // 
     ////////////////////// 
     // Update the dt value (to be the time since the last update) 
     dt = (SDL_GetTicks() - start_time)/1000.0f; 
     start_time = SDL_GetTicks(); 

      //increment the movement timer 
     timer-=dt; 
     if(timer<=0) When timer hits zero the snake is moved north. 
      { 
       p1Snake.goNorth(); 
       timer = originalTimer; //reset timer. 
      } 
    } 

    return 0; 
} 

Хорошо! Поэтому мой вопрос касается переменной 'originalTimer'. Это вне области, где таймер сбрасывается, так что я могу сделать по-другому? Извините, если это очень элементарный вопрос.

+0

вы имели в виду 'originalTime'? –

+1

Предполагая, что вы на самом деле имеете в виду 'originalTime', тогда почему вы думаете, что это вне сферы действия? –

+2

Это '#undef main' выглядит настолько подозрительно, что я даже не могу его описать. – chris

ответ

1

Может быть опечатка, но есть две различные переменные originalTime и originalTimer

Изменение в коде ниже должен работать для вас ..

timer = originalTime; //reset timer. 
2

Вы использовали разные названия. originalTime и originalTimer

#include "LList.h" 
#include "Snake.h" 
#undef main 



int main() 
{ 

    float dt;    // time since last update. 
    int start_time; 
    bool paused = false; 
    float originalTimer = 1.0f; //Changed to originalTimer 
    float timer = originalTimer; //Changed to originalTimer 
    Snake p1Snake(10, false); 

    // Start the 'stopwatch' 
    start_time = SDL_GetTicks(); 

    /////////////////////// 
    // The 'game loop' // 
    /////////////////////// 
    while (!done) 
    { 
     ////////////////////// 
     // Update variables // 
     ////////////////////// 
     // Update the dt value (to be the time since the last update) 
     dt = (SDL_GetTicks() - start_time)/1000.0f; 
     start_time = SDL_GetTicks(); 

     //increment the movement timer 
     timer-=dt; 
     if(timer<=0) //When timer hits zero the snake is moved north. 
     { 
      p1Snake.goNorth(); 
      timer = originalTimer; //reset timer. 
     } 
    } 

    return 0; 
} 
Смежные вопросы