2011-06-12, 17:10
#1
Tja håller på med en "läxa", igen, som jag inte förstår mig riktigt på O.o
kan någon kolla vad som fattas här?
b.la box2 är en del av uppgiften att sätta till en box som går i Y led medan den första boxen går i X led, men när jag får in min andra box att röra sig så blir min X-box osynlig?
sedan en annan grej är:
koden där nere som är:
det är för att kolla ifall den håller på gå utanför fönstret, hur får jag den att fungera? :S testat slå in allt möjligt där men den fortsätter ut som om koden inte fanns alls, fått till det så att if satsen under denna, If checkBounds > 0: box_x=0 men då rör inte boxen sig alls? hmm
Uppgiften är alltså:
Lägg till en box som går i Y-LED -> Gjort men min X-Box blir då osynlig?
Stoppa den så att den inte går utanför rutan och kommer till början igen, hur gör man detta?
btw om ni undrar varför det står :
if box_x.rect.top <= 0:
self.dy = 0
*self*.dy
det är för att koden är kopierad från en annan uppgift (färdig exempel) och har bytt ut, IF *self* mot IF box_x , ihopp om att det ska fungera men de gör de inte :/
kan någon kolla vad som fattas här?
b.la box2 är en del av uppgiften att sätta till en box som går i Y led medan den första boxen går i X led, men när jag får in min andra box att röra sig så blir min X-box osynlig?
sedan en annan grej är:
koden där nere som är:
Kod:
#lagg till en if-sats som kollar om box_x ar pa vag ut fran fonstret
def checkBounds():
det är för att kolla ifall den håller på gå utanför fönstret, hur får jag den att fungera? :S testat slå in allt möjligt där men den fortsätter ut som om koden inte fanns alls, fått till det så att if satsen under denna, If checkBounds > 0: box_x=0 men då rör inte boxen sig alls? hmm
Kod:
""" moveBox.py
illustrates basic motion
in the IDEA/ALTER framework
moves a rect across the screen """
#Initialize
import pygame
pygame.init()
#Display
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("move a box")
#Entities
#yellow background
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255, 255, 0))
#make a red 25 x 25 box
box = pygame.Surface((25, 25))
box = box.convert()
box.fill((255, 0, 0))
box2 = pygame.Surface((35, 35))
box2 = box2.convert()
box2.fill((255, 0, 0))
# set up some box variables
box_x = 0
box_y = 200
box2_x = 200
box2_y = 0
#ACTION
#Assign
clock = pygame.time.Clock()
keepGoing = True
#Loop
while keepGoing:
#Time
clock.tick(30)
#Events
for event in pygame.event.get():
if event.type == pygame.QUIT:
keepGoing = False
#modify box value
#lagg till en rad sa att box_x okar med 5
box_x=box_x+5
box2_y=box2_y+5
#check boundaries
#lagg till en if-sats som kollar om box_x ar pa vag ut fran fonstret
def checkBounds():
if box_x.rect.right >= get_width():
self.dx = 0
if box_x.rect.left <= 0:
self.dx = 0
if box_x.rect.bottom >= get_height():
self.dy = 0
if box_x.rect.top <= 0:
self.dy = 0
return checkBounds
#satt box_x till 0 om sa ar fallet, d.v.s. att boxen kommer fram pa andra sidan
if checkBounds == 0:
box_x=0
#Refresh screen
screen.blit(background, (0,0))
screen.blit(box, (box_x, box_y))
pygame.display.flip()
screen.blit(background, (0,0))
screen.blit(box2, (box2_x, box2_y))
pygame.display.flip()
Uppgiften är alltså:
Lägg till en box som går i Y-LED -> Gjort men min X-Box blir då osynlig?
Stoppa den så att den inte går utanför rutan och kommer till början igen, hur gör man detta?
btw om ni undrar varför det står :
if box_x.rect.top <= 0:
self.dy = 0
*self*.dy
det är för att koden är kopierad från en annan uppgift (färdig exempel) och har bytt ut, IF *self* mot IF box_x , ihopp om att det ska fungera men de gör de inte :/
__________________
Senast redigerad av niicz 2011-06-12 kl. 17:37.
Senast redigerad av niicz 2011-06-12 kl. 17:37.
Du anropar den genom att skriva dess namn, och ett par parenteser efter.
Det du gjort är fel eftersom du suddar ut allt från förra framen, ritar ut box1, sen suddar du ut allt igen (inkl box1), sen ritar du box2 och clock.tick() körs. Eftersom det är under tiden clock.tick() körs som vi faktiskt uppfattar det som är på skärmen så kommer inte box1 synas.