perl
Erot
Tämä näyttää erot valitun ja nykyisen version kesken tästä sivusta.
| Both sides previous revisionEdellinen revisioSeuraava revisio | Edellinen revisio | ||
| perl [2012/11/28 18:56] – moversti | perl [2015/08/13 07:20] (nykyinen) – ulkoinen muokkaus 127.0.0.1 | ||
|---|---|---|---|
| Rivi 1: | Rivi 1: | ||
| + | ====== Suorakaiteiden törmäys ====== | ||
| + | |||
| + | Verrataan x- ja y-koordinaatteja. | ||
| + | <code perl> | ||
| + | # -*- coding: utf-8 -*- | ||
| + | import pygame | ||
| + | |||
| + | naytto = pygame.display.set_mode((640, | ||
| + | pygame.display.set_caption(" | ||
| + | |||
| + | def main(): | ||
| + | laatikko1_x = 100 | ||
| + | laatikko1_y = 50 | ||
| + | |||
| + | laatikko1_korkeus = 100 | ||
| + | laatikko1_leveys = 100 | ||
| + | |||
| + | laatikko2_x = 250 | ||
| + | laatikko2_y = 100 | ||
| + | |||
| + | laatikko2_korkeus = 50 | ||
| + | laatikko2_leveys = 50 | ||
| + | |||
| + | while True: | ||
| + | tapahtuma = pygame.event.poll() | ||
| + | if tapahtuma.type == pygame.QUIT: | ||
| + | break | ||
| + | |||
| + | naytto.fill((0, | ||
| + | pygame.draw.rect(naytto, | ||
| + | |||
| + | if tapahtuma.type == pygame.KEYDOWN: | ||
| + | if tapahtuma.key == pygame.K_RIGHT: | ||
| + | laatikko2_x = laatikko2_x + 10 | ||
| + | if tapahtuma.key == pygame.K_LEFT: | ||
| + | laatikko2_x = laatikko2_x - 10 | ||
| + | if tapahtuma.key == pygame.K_DOWN: | ||
| + | laatikko2_y = laatikko2_y + 10 | ||
| + | if tapahtuma.key == pygame.K_UP: | ||
| + | laatikko2_y = laatikko2_y - 10 | ||
| + | |||
| + | tormaa = False | ||
| + | |||
| + | # Testataan ensin, ovatko laatikoiden x-koordinaatit päällekkäin. Jos ovat, niin testataan y-koordinaatit | ||
| + | |||
| + | if laatikko1_x < laatikko2_x + laatikko2_leveys and laatikko2_x < laatikko1_x + laatikko1_leveys: | ||
| + | if laatikko1_y < laatikko2_y + laatikko2_korkeus and laatikko2_y < laatikko1_y + laatikko1_korkeus: | ||
| + | tormaa = True | ||
| + | |||
| + | if (tormaa): | ||
| + | pygame.draw.circle(naytto, | ||
| + | else: | ||
| + | pygame.draw.circle(naytto, | ||
| + | | ||
| + | pygame.draw.rect(naytto, | ||
| + | |||
| + | pygame.display.flip() | ||
| + | |||
| + | main() | ||
| + | </ | ||
| + | |||
| + | ====== Pallon ja suorakaiteen törmäys ====== | ||
| + | |||
| + | Ei ole helpoimpia tapauksia. | ||
| + | |||
| <code perl> | <code perl> | ||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||
| Rivi 38: | Rivi 103: | ||
| tormaa = False | tormaa = False | ||
| + | #lasketaan keskipisteiden etäisyys toisistaan | ||
| pallon_etaisyys_x = math.fabs(pallo_x - (laatikko_x + laatikko_leveys/ | pallon_etaisyys_x = math.fabs(pallo_x - (laatikko_x + laatikko_leveys/ | ||
| pallon_etaisyys_y = math.fabs(pallo_y - (laatikko_y + laatikko_korkeus/ | pallon_etaisyys_y = math.fabs(pallo_y - (laatikko_y + laatikko_korkeus/ | ||
| Rivi 64: | Rivi 130: | ||
| main() | main() | ||
| - | |||
| </ | </ | ||
perl.1354121775.txt.gz · Viimeksi muutettu: 2015/08/13 07:18 (ulkoinen muokkaus)
