diff options
Diffstat (limited to 'slider.py')
-rwxr-xr-x | slider.py | 110 |
1 files changed, 55 insertions, 55 deletions
@@ -1,55 +1,55 @@ -# slider.py
-import utils,pygame,g,copy
-
-# sets g.level 1..steps
-class Slider:
- def __init__(self,cx,cy,steps,colour=utils.BLACK):
- self.easy=utils.load_image('slow.png',True)
- self.hard=utils.load_image('fast.png',True)
- self.xo=utils.load_image('xo.png',True)
- iw=self.hard.get_width(); ih=self.hard.get_height()
- w=g.sy(16); w2=w/2; h2=ih/2
- self.x1=cx-w2; self.y=cy-h2; self.x2=cx+w2-iw
- x=cx-w2+iw*1.2; w=w-2*iw*1.2; h=g.sy(.12);y=cy+g.sy(.34)
- self.rect=pygame.Rect(x,y,w,h)
- mh=g.sy(1);self.mark=pygame.Rect(x,y-mh/2+h/2,h,mh)
- self.steps=steps; self.dx=w/(steps-1);self.colour=colour
- self.cx=cx; self.cy=cy
- marks=[]; x=self.rect.left; click_rects=[]; dx=self.dx
- for i in range(self.steps):
- rect=copy.copy(self.mark); rect.left=x-5; rect.width=10; marks.append(rect)
- click_rect=pygame.Rect(x-dx/2,self.mark.top,dx,self.mark.h)
- click_rects.append(click_rect)
- x+=dx
- self.marks=marks; self.click_rects=click_rects
-
- def draw(self):
- g.screen.blit(self.easy,(self.x1,self.y));
- g.screen.blit(self.hard,(self.x2,self.y))
- pygame.draw.rect(g.screen,self.colour,self.rect) # horizontal line
- x=self.rect.left # now draw marks
- for i in range(self.steps):
- self.mark.left=x; pygame.draw.rect(g.screen,self.colour,self.mark)
- if i==(g.level-1):
- dx=self.xo.get_width()/2; dy=self.xo.get_height()/2
- g.screen.blit(self.xo,(x-dx+self.mark.w/2,self.cy-dy))
- x+=self.dx
-
- def mouse(self):
- mx,my=g.pos
- rect=self.easy.get_rect(topleft=(self.x1,self.y))
- if rect.collidepoint(mx,my):
- if g.level>1: g.level-=1; return True#****
- rect=self.hard.get_rect(topleft=(self.x2,self.y))
- if rect.collidepoint(mx,my):
- if g.level<self.steps: g.level+=1; return True#****
- n=1
- for rect in self.click_rects:
- if rect.collidepoint(mx,my):
- if g.level==n:
- return False#****
- else:
- g.level=n; return True#****
- n+=1
- return False
-
+# slider.py +import utils,pygame,g,copy + +# sets g.level 1..steps +class Slider: + def __init__(self,cx,cy,steps,colour=utils.BLACK): + self.easy=utils.load_image('slow.png',True) + self.hard=utils.load_image('fast.png',True) + self.xo=utils.load_image('xo.png',True) + iw=self.hard.get_width(); ih=self.hard.get_height() + w=g.sy(16); w2=w/2; h2=ih/2 + self.x1=cx-w2; self.y=cy-h2; self.x2=cx+w2-iw + x=cx-w2+iw*1.2; w=w-2*iw*1.2; h=g.sy(.12);y=cy+g.sy(.34) + self.rect=pygame.Rect(x,y,w,h) + mh=g.sy(1);self.mark=pygame.Rect(x,y-mh/2+h/2,h,mh) + self.steps=steps; self.dx=w/(steps-1);self.colour=colour + self.cx=cx; self.cy=cy + marks=[]; x=self.rect.left; click_rects=[]; dx=self.dx + for i in range(self.steps): + rect=copy.copy(self.mark); rect.left=x-5; rect.width=10; marks.append(rect) + click_rect=pygame.Rect(x-dx/2,self.mark.top,dx,self.mark.h) + click_rects.append(click_rect) + x+=dx + self.marks=marks; self.click_rects=click_rects + + def draw(self): + g.screen.blit(self.easy,(self.x1,self.y)); + g.screen.blit(self.hard,(self.x2,self.y)) + pygame.draw.rect(g.screen,self.colour,self.rect) # horizontal line + x=self.rect.left # now draw marks + for i in range(self.steps): + self.mark.left=x; pygame.draw.rect(g.screen,self.colour,self.mark) + if i==(g.level-1): + dx=self.xo.get_width()/2; dy=self.xo.get_height()/2 + g.screen.blit(self.xo,(x-dx+self.mark.w/2,self.cy-dy)) + x+=self.dx + + def mouse(self): + mx,my=g.pos + rect=self.easy.get_rect(topleft=(self.x1,self.y)) + if rect.collidepoint(mx,my): + if g.level>1: g.level-=1; return True#**** + rect=self.hard.get_rect(topleft=(self.x2,self.y)) + if rect.collidepoint(mx,my): + if g.level<self.steps: g.level+=1; return True#**** + n=1 + for rect in self.click_rects: + if rect.collidepoint(mx,my): + if g.level==n: + return False#**** + else: + g.level=n; return True#**** + n+=1 + return False +
\ No newline at end of file |