Tip:
Highlight text to annotate it
X
>> DAVID MALAN: Vamos escrever um programa envolvendo uma janela e um círculo com
o círculo indo e voltando fora à esquerda e à direita
bordos da janela.
Para isso, vamos usar o Stanford Biblioteca portátil, e vamos primeiro
incluir gevents.h para que possamos ouvir os movimentos do mouse.
Vamos, então, incluir gobjects.h para que podemos declarar coisas como ovais ou
círculos, realmente.
E então vamos incluir gwindow.h para que temos uma janela gráfica para
tudo.
>> Vamos declarar principal da forma habitual.
E vamos agora declarar e instanciar ou criar essa janela, GWindow -
e nós vamos chamar a janela variável -
fica newGWindow.
E vamos fazê-lo de forma arbitrária 320 pixels por 240 pixels.
>> Vamos próximo instanciar um círculo.
Mas para instanciar este círculo, precisamos fazer um pouco mais de trabalho.
Em particular, vamos preencher esse círculo de modo que toda a coisa é
preto e não apenas o delinear mesmo.
Goval -
vamos chamá-lo círculo -
fica newGOval.
Vamos colocar este oval em 0, 110, e nós vamos fazer os ovais 20 pixels de largura por
20 pixels de altura - em outras palavras, uma diâmetro de 20 ou de um raio de 10.
>> Vamos agora definir a cor do círculo ser citação, fecha aspas, "***". Vamos
agora defini-lo ser preenchido especificando verdade.
E agora, finalmente, vamos adicionar o círculo de janela da seguinte forma, em que o
Esta última é adicionada à anterior.
>> Vamos agora declarar uma dupla.
Vamos chamá-lo de velocidade.
E um tanto arbitrariamente, vamos dizer que o velocidade desse círculo será
2,0, por outras palavras, dois pixels para cada unidade de tempo.
E agora vamos deliberadamente induzir um loop infinito.
>> Então, como fazer este círculo saltar para trás e para a frente?
Bem, vamos assumir dentro deste ciclo que para cada unidade de tempo, estamos
indo para mover o círculo um pouco bit com base na sua velocidade de 2 pixels
por unidade de tempo.
Mas continuamente, nós vamos ter que verificar se o círculo está tocando o
borda direita da tela ou para a esquerda borda da tela, porque se assim for, nós
precisa dele para se recuperar, por assim dizer.
>> Como implementar o noção de saltar?
Bem, se nós estamos indo em 2 pixels para a direito por unidade de tempo, para saltar fora
a margem direita, podemos simplesmente reverter que, para ser negativos 2 pixels por unidade
de tempo, contrariando assim a velocidade.
Então, na verdade, de salto é relativamente simples.
>> Vamos primeiro mover o círculo por isso muitos os pixels ao longo do eixo-x, por esta
muitos pixels ao longo do eixo-y.
Em outras palavras, nós não queremos que mover ao longo do eixo y de todo.
Nós só queremos que ele se recuperar e para a frente esquerda e direita.
>> E vamos agora verificar dentro deste loop se a coordenada x do círculo mais
a largura do círculo é maior ou igual ao
largura da janela -
em outras palavras, se a localização do círculo mais a largura do círculo
em si é agora além da borda da janela, TEREMOS
melhor reverter nossa velocidade -
velocidade fica velocidade negativa, assim lançando um positivo para um
negativo ou negativo para um positivo.
Mas e se o círculo está se movendo de direita para a esquerda e, portanto, atinge
a margem esquerda?
Em outras palavras, se a coordenada x do o círculo é agora menor ou igual
a 0, vamos em frente e novamente inverter a velocidade.
>> Então, por que eu não adicionado na largura do círculo esta
tempo, como eu fazia antes?
Bem, lembre-se que as coordenadas de um objeto são definidos
pelo seu canto superior esquerdo, não por seu meio.
E assim, quando o círculo está se movendo de esquerda para a direita, é preciso verificar
se a margem direita do círculo passou a
borda direita da janela.
Então, para descobrir o que é isso, temos para obter a coordenada x do círculo
mais a largura do círculo para mover nós mesmos a partir do topo da esquerda
canto, de forma eficaz, para o canto superior direito.
Quando o círculo está se movendo da direita para a esquerda, enquanto isso, não precisamos de
se preocupar com essa adição, porque a canto superior esquerdo do círculo é
já o valor que vai começa a partir get x.
>> Vamos agora passar a bola.
Vamos agora salvar, compilar e executar este programa, faça salto,. / rejeição.
E aí temos um programa.
>> Mas o círculo está se movendo tão rápido danado, é quase impossível ver o que está
realmente acontecendo.
Então, vamos muito pelo programa à força por clique no X no canto superior direito
canto aqui.
Vamos agora voltar para o código-fonte e retardar as coisas um pouco.
>> Em outras palavras, nesse infinito loop, em vez de apenas nos movemos e
mover-se e de novo, ad nauseum, vamos demorar por apenas alguns milissegundos
antes de continuar a se mover novamente.
Em particular, vamos para o fundo do ciclo infinito aqui e simplesmente
pausa para, digamos, 10 milissegundos em cada iteração.
Vamos agora recompilar e re-run de rejeição.
E agora vemos um razoável muito mais implementação, onde podemos ver a
círculo verdadeiramente saltando sobre o esquerda e margem direita.