Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, tenho uma pequena duvida a qual não sei se é possível...
Eu ainda estou estudando o Pascal (iniciando o Object Pascal), e o professor me disse claramente que, ao rodar um programa feito por esta interface "pobre" (janelinha do DOS), o computador irá executar linha a linha. Até aí tudo bem...
Só que agora, me desafiei a fazer um jogo, tipo aqueles do Atari, só que um pouco diferente, e daí quero colocar um cronômetro na parte superior da tela. Mas como vou fazer isso? Se o computador entende linha a linha, como posso programar pra que o usuário possa jogar normalmente e ao mesmo tempo o cronômetro esteja ali em cima funcionando?
E não é só o cronômetro, eu tbm gostaria de colocar alguns comentarios (tbm na parte superior) que depois de um certo tempo iriam sumir, até da para programar isto neste sistema de linha a linha, mas ficará confuso e desorganizado.
Alguma solução?
Não há como? Já andei pesquisando bastante e nem meu professor pode me ajudar, então acho que o jeito é tirar esse cronômetro e apenas calcular o tempo ao final do jogo, ainda posso pegar a hora no inicio e no final e apenas pegar a diferença de horário
Bom olha, se tu estiver usando uma ide mais sofisticada como o Delphi ou o Lazarus, é muito fácil criar uma thread, você pode fazer isso de algumas maneiras.
Uma delas é criando uma classe que herde a classe TThread.
Outra maneira é usando a função BeginThread do Windows.
Vou mostrar um exemplo da função BeginThread, mas já vou avisando que é uma thread muito simples e não faço nenhum controle dela.
Aqui está a função que vai ser executada pela thread:
function FuncaoExecutadaPelaThread(ThreadObjPtr: Pointer): PtrInt;
begin
a := TForm1(ThreadObjPtr);
form1.Button1.Caption := '';Sleep(10); //aguarda 10 milésimos de segundos antes de continuar
end;
end;
E aqui a thread é criada e executada:
function criaTrhead;
var
iID: longword;
hThread: HANDLE;A sim, e antes que eu me esqueça, para funcionar, tu tem que "colocar" a unit "windows" nas uses do teu programa.
Tu pode encontrar na internet artigos sobre a função CreateThread, também do Windows. Mas não funciona muito bem no Pascal.
Mais uma dica: Estude um pouco sobre thread. Vai ver que, quando precisar, poderá usar mais de um núcleo do processador come elas.
uma forma seria com threads, mas se voce for usar o turbo pascal, nao sera possivel porque ele nao suporta o mesmo. Procure no google sobre como criar o loop de um jogo. voce observara que precisara manter um loop principal que ficara ativo ate que receba um comando de finalizacao. este loop sera responsavel por atualizar a tela e, talvez, interceptar os dispositivos de entrada. com isto, voce podera criar uma especie de sistema de mensagens e seu jogo respondera estas mensagens....
eh claro, esta sao algumas possibilidades...