Käyttäjän työkalut

Sivuston työkalut


perl

Erot

Tämä näyttää erot valitun ja nykyisen version kesken tästä sivusta.

Linkki vertailunäkymään

Both sides previous revisionEdellinen revisio
Seuraava revisio
Edellinen revisio
perl [2012/11/28 18:56] moverstiperl [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, 400))
 +pygame.display.set_caption("Laatikoiden törmäys")
 + 
 +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, 0, 0))
 +        pygame.draw.rect(naytto, (255, 0, 0), (laatikko1_x, laatikko1_y, laatikko1_korkeus, laatikko1_leveys))
 + 
 +        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,  (0,255,0), (10, 10), 5)
 +        else:
 +            pygame.draw.circle(naytto,  (255,0,0), (10, 10), 5)
 +            
 +        pygame.draw.rect(naytto, (255, 255, 0), (laatikko2_x, laatikko2_y, laatikko2_korkeus, laatikko2_leveys))
 + 
 +        pygame.display.flip()
 + 
 +main()
 +</code>
 +
 +====== 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/2))         pallon_etaisyys_x = math.fabs(pallo_x - (laatikko_x + laatikko_leveys/2))
         pallon_etaisyys_y = math.fabs(pallo_y - (laatikko_y + laatikko_korkeus/2))         pallon_etaisyys_y = math.fabs(pallo_y - (laatikko_y + laatikko_korkeus/2))
Rivi 64: Rivi 130:
    
 main() main()
- 
 </code> </code>
perl.1354121775.txt.gz · Viimeksi muutettu: 2015/08/13 07:18 (ulkoinen muokkaus)