Tip:
Highlight text to annotate it
X
>> DAVID Malan: Imos escribir un programa envolvendo unha fiestra e un círculo con
o círculo indo e volvendo fóra á esquerda e á dereita
bordos da xanela.
Para iso, imos utilizar o Stanford Biblioteca portátil, e imos primeiro
incluír gevents.h para que poidamos escoitar os movementos do rato.
Imos, entón, incluír gobjects.h para que podemos declarar cousas como ovais ou
círculos, realmente.
E entón imos incluír gwindow.h para que temos unha xanela gráfica para
todo.
>> Imos declarar principal da forma habitual.
E imos agora declarar e instanciar ou crear esta xanela, GWindow -
e nós imos chamar a xanela variable -
fica newGWindow.
E imos facelo de forma arbitraria 320 píxeles por 240 píxeles.
>> Imos preto instanciar un círculo.
Pero para instanciar este círculo, necesitamos facer un pouco máis de traballo.
En particular, imos cubrir ese círculo de xeito que toda a cousa é
*** e non só o delinear mesmo.
Goval -
imos chamalo círculo -
fica newGOval.
Imos poñer este oval en 0, 110, e nós imos facer os ovais 20 píxeles de ancho por
20 píxeles de altura - noutras palabras, unha diámetro de 20 ou dun radio de 10.
>> Imos agora establecer a cor do círculo ser cita, pecha comiñas, "***". Imos
agora define-lo ser cuberto especificando verdade.
E agora, por fin, imos engadir o círculo de xanela do seguinte xeito, en que o
Esta última é engadida á anterior.
>> Imos agora declarar unha dobre.
Imos chamalo de velocidade.
E un tanto arbitrariamente, imos dicir que o velocidade dese círculo será
2.0, por outras palabras, dous píxeles para cada unidade de tempo.
E agora imos deliberadamente inducir un loop infinito.
>> Entón, como facer este círculo ir para atrás e para adiante?
Ben, imos asumir dentro deste ciclo que para cada unidade de tempo, estamos
indo a mover o círculo algo bits baseado na súa velocidade de 2 píxeles
por unidade de tempo.
Pero continuamente, nós imos ter que comprobar que o círculo está tocando o
bordo dereita da pantalla ou á esquerda bordo da pantalla, porque se é así, nós
precisa del para se recuperar, por así dicir.
>> Como aplicar o noción de ir?
Ben, se nós estamos indo en 2 píxeles para a dereito por unidade de tempo, para ir fóra
a marxe dereita, podemos simplemente desfacer que, para ser negativos 2 píxeles por unidade
de tempo, contrariando así a velocidade.
Entón, en realidade, de salto é relativamente simple.
>> Imos primeiro mover o círculo por iso moitos os píxeles ao longo do eixe x, por esta
moitos píxeles ao longo do eixe-y.
Noutras palabras, nós non queremos que mover ao longo do eixe y de todo.
Nós só queremos que recuperar e para adiante esquerda e dereita.
>> E imos agora comprobar dentro deste loop se a coordenada x do círculo máis
o ancho do círculo é maior ou igual ao
anchura da xanela -
noutras palabras, a localización do círculo máis o ancho do círculo
en si é agora ademais do borde do diálogo, teremos
mellor desfacer nosa velocidade -
velocidade queda velocidade negativa, así lanzando un positivo a un
negativo ou negativo para un positivo.
Pero e se o círculo está movendo de dereita para a esquerda e, polo tanto, chega
a marxe esquerda?
Noutras palabras, se a coordenada x do o círculo é agora menor ou igual
a 0, imos adiante e de novo inverter a velocidade.
>> Entón, por que eu non engadido na ancho do círculo esta
tempo, como eu facía antes?
Ben, lembre que as coordenadas dun obxecto son definidos
polo seu ángulo superior esquerdo, non polo seu medio.
E así, cando o círculo está movendo de esquerda a dereita, hai que comprobar
a marxe dereita do círculo pasou a
bordo dereita da xanela.
Entón, para descubrir o que é iso, temos para obter a coordenada x do círculo
máis o ancho do círculo para mover nós mesmos dende o principio da esquerda
canto, de forma eficaz, ao esquina superior dereita.
Cando o círculo está movendo da dereita para a esquerda, mentres tanto, non precisamos de
preocuparse esa suma, porque a esquina superior esquerda do círculo é
xa o valor que vai comeza a partir get x.
>> Imos agora pasar o balón.
Imos agora gardar, compilar e executar este programa, faga salto,. / rexeitamento.
E aí temos un programa.
>> Pero o círculo está movendo tan rápido danado, é case imposible ver o que está
realmente a suceder.
Entón, imos ó programa á forza por prema no X na esquina superior dereita
canto aquí.
Imos agora volver ao código fonte e retardar as cousas un pouco.
>> Noutras palabras, nese infinito loop, no canto de só nos movemos e
moverse e de novo, ad nauseum, imos levar por uns poucos milisegundos
antes de continuar a moverse de novo.
En particular, imos ao fondo do ciclo infinito aquí e simplemente
pausa para, digamos, 10 milisegundos en cada iteración.
Imos agora recompilar e re-run de rexeitamento.
E agora vemos un razoable moito máis implantación, onde podemos ver a
círculo verdadeiramente saltando sobre o esquerda e marxe dereita.