#! /usr/bin/env python # -*- coding: utf-8 -*- # # Jump # Copyright (C) 2008, Joshua Seaver, Bimal Sadhwani, Natalie Rusk # Copyright (C) 2012, 2013, Alan Aguiar # Based on the original code in Logo of Natalie Rusk. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Contact information: # Alan Aguiar alanjas@hotmail.com import os import sys import gtk import pygame import random from pygame.locals import * from cur import * from gettext import gettext as _ BROWN_COLOR = (88, 47, 27) doneTest = 0 global myMatrix myMatrix = [[2,2,0,0,0,2,2], [2,2,0,1,0,2,2], [0,0,1,1,1,0,0], [0,0,0,1,0,0,0], [0,0,0,1,0,0,0], [2,2,0,0,0,2,2], [2,2,0,0,0,2,2]] global myMatrix_colors myMatrix_colors=[[0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0]] myMatrixGridSize = len(myMatrix[0]) marblesLeft = 0 movesLeft = 0 _font = 'VeraSe.ttf' color=(0,0,0) #color=(255,255,255) play_var=0 button1=None helpoff=None count=0 marbleColor=0 special_x=0 special_y=0 next_marble=0 global sound_enable sound_enable = True def load_image(name, colorkey=None): fullname = os.path.join('data', name) try: image = pygame.image.load(fullname) except pygame.error, message: print 'Cannot load image:', fullname raise SystemExit, message image = image.convert() if colorkey: image.set_colorkey(colorkey) return image class NoneSound: def play(self): pass def load_sound(name): sound = NoneSound() fullname = os.path.join('data', name) try: sound = pygame.mixer.Sound(fullname) except pygame.error, message: print 'Cannot load sound:', fullname #raise SystemExit, message return sound class board(object): def __init__(self): self.RESERVED = 0 self.EMPTY = 1 self.MARBLE = 2 def getLayout(self): return [[0,0,2,2,2,0,0],\ [0,2,2,2,2,2,0],\ [2,2,2,2,2,2,2],\ [2,2,2,2,2,2,2],\ [2,2,2,2,2,2,2],\ [0,2,2,2,2,2,0],\ [0,0,2,2,2,0,0]] #need to somehow load in random marble images from data folder class Marble(pygame.sprite.Sprite): def __init__(self, rect=None): pygame.sprite.Sprite.__init__(self) marbleColor = random.random() marbleColor = marbleColor * 10 marbleColor = int(marbleColor) if marbleColor > 23: marbleColor = 23 pngLoad = str(marbleColor) pngLoad = pngLoad + '.png' self.image = load_image(pngLoad,-1) self.rect = self.image.get_rect() if rect != None: self.rect = rect class simple_button(pygame.sprite.Sprite): def __init__(self,x,y,pic,sound): pygame.sprite.Sprite.__init__(self) self.image = load_image(pic) self.rect = self.image.get_rect() self.status = self.down = self.up = 0 self.ypos = self.rect.top = y self.xpos = self.rect.left = x self.pressSound = load_sound('newboard.ogg') def press(self): global sound_enable self.status = 1 if sound_enable: self.pressSound.play() def unpress(self): self.status = 0 def update(self): if self.down: self.press() self.down = 0 self.screen.blit(self.background,(0,0)) elif self.up: self.unpress() self.up = 0 def is_focused(self): return self.rect.collidepoint(pygame.mouse.get_pos()) class SolitaireMain: def __init__(self, width=1200,height=825): self.width = width self.height = height self.actual_level = 0 def change_sound(self, sound): global sound_enable sound_enable = sound def load_things(self): self.screen = pygame.display.get_surface() if (self.screen == None): info = pygame.display.Info() self.width = info.current_w self.height = info.current_h self.screen = pygame.display.set_mode((self.width, self.height), pygame.FULLSCREEN) pygame.display.set_caption(_('Jump')) self.font = pygame.font.Font(None, 50) self.marble_images=[] for i in range(25): image = load_image(str(i) + '.png', color) self.marble_images.append(image) bl=pygame.image.load("data/blank.png") z=pygame.image.load("data/25.png") self.marble_images.append(bl)#number25 self.marble_images.append(z) #special marbles self.special_marbles=[] for i in range(36): n = i + 1 image = load_image('S' + str(n) + '.png') self.special_marbles.append(image) self.special_marbles[32] = bl #no 32 #call reset funnction self.reset() self.helpscreen = pygame.image.load("data/Instructions.png") self.flags=[] self.flags.append(pygame.image.load("data/Flag01.png").convert()) self.flags.append(pygame.image.load("data/Flag02.png").convert()) self.flags.append(pygame.image.load("data/Flag03.png").convert()) self.flags.append(pygame.image.load("data/Flag04.png").convert()) self.flags.append(pygame.image.load("data/Flag05.png").convert()) self.flags.append(pygame.image.load("data/Flag06.png").convert()) self.flags.append(pygame.image.load("data/Flag07.png").convert()) self.level_sounds=[] self.level_sounds.append(load_sound('0.ogg')) self.level_sounds.append(load_sound('1.ogg')) self.level_sounds.append(load_sound('2.ogg')) self.level_sounds.append(load_sound('3.ogg')) self.level_sounds.append(load_sound('4.ogg')) self.level_sounds.append(load_sound('5.ogg')) self.level_sounds.append(load_sound('6.ogg')) self.level_sounds.append(load_sound('7.ogg')) self.move_sound = load_sound('drop.ogg') self.picked_sound = load_sound('pop1.ogg') def reset(self): global marbleColor #intialisation of Number for the first time ..keep a balnk png. self.updated_text=32 self.updated_moves=4 self.Number=25# 26 #25 self.pressed=False self.selected= False self.initial_x=0 self.initial_y=0 self.final_x=0 self.final_y=0 self.OutofRange=True self.clickedOnce=False self.attached=False self.picked=False marbleColor=0 def increase_level(self): self.actual_level = self.actual_level + 1 if self.actual_level > 6: self.actual_level = 0 def reset_board(self, level=None): if not(level == None): self.actual_level = level global myMatrix global myMatrix_colors # levels # 0:'Cross' # 1:'Cross 2' # 2:'Hearth' # 3:'Arrow' # 4:'Pyramid' # 5:'Diamond' # 6:'Solitaire' if self.actual_level == 6: myMatrix=[[2,2,1,1,1,2,2], [2,2,1,1,1,2,2], [1,1,1,1,1,1,1], [1,1,1,0,1,1,1], [1,1,1,1,1,1,1], [2,2,1,1,1,2,2], [2,2,1,1,1,2,2]] elif self.actual_level == 0: myMatrix=[[2,2,0,0,0,2,2], [2,2,0,1,0,2,2], [0,0,1,1,1,0,0], [0,0,0,1,0,0,0], [0,0,0,1,0,0,0], [2,2,0,0,0,2,2], [2,2,0,0,0,2,2]] elif self.actual_level == 1: myMatrix=[[2,2,0,0,0,2,2], [2,2,0,1,0,2,2], [0,0,0,1,0,0,0], [0,1,1,1,1,1,0], [0,0,0,1,0,0,0], [2,2,0,1,0,2,2], [2,2,0,0,0,2,2]] elif self.actual_level == 2: myMatrix=[[2,2,1,1,1,2,2], [2,2,1,1,1,2,2], [0,0,1,1,1,0,0], [0,0,1,0,1,0,0], [0,0,0,0,0,0,0], [2,2,0,0,0,2,2], [2,2,0,0,0,2,2]] elif self.actual_level == 3: myMatrix=[[2,2,0,1,0,2,2], [2,2,1,1,1,2,2], [0,1,1,1,1,1,0], [0,0,0,1,0,0,0], [0,0,0,1,0,0,0], [2,2,1,1,1,2,2], [2,2,1,1,1,2,2]] elif self.actual_level == 4: myMatrix=[[2,2,0,0,0,2,2], [2,2,0,1,0,2,2], [0,0,1,1,1,0,0], [0,1,1,1,1,1,0], [1,1,1,1,1,1,1], [2,2,0,0,0,2,2], [2,2,0,0,0,2,2]] elif self.actual_level == 5: myMatrix=[[2,2,0,1,0,2,2], [2,2,1,1,1,2,2], [0,1,1,1,1,1,0], [1,1,1,1,1,1,1], [0,1,1,1,1,1,0], [2,2,1,1,1,2,2], [2,2,0,1,0,2,2]] myMatrix_colors=[[0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0], [0,0,0,0,0,0,0]] def change_level(self, level): self.play_var = 0 self.reset() self.reset_board(level) self.SuperLooper() def checkValidMovement(self): global marbleColor, sound_enable temp=pygame.mouse.get_pos() x=temp[0] y=temp[1] x=x-300 x/=90 y-=120 y/=90 if(x>=0 and x<=6 and y>=0 and y<=6): if(myMatrix[y][x]==0): self.final_x=y self.final_y=x else: self.OutofRange=True self.final_x=0 self.final_y=0 if(self.initial_x ==0 and self.initial_y ==0): self.OutofRange=False w=self.initial_x x=self.initial_y self.wInput=self.initial_x self.xInput=self.initial_y y=self.final_x z=self.final_y self.yInput=self.final_x self.zInput=self.final_y neighborState = 99 neighborStateRow = 99 neighborStateColumn = 99 validJump = 99 self.matrixPosStart=myMatrix[w][x] self.matrixPosEnd=myMatrix[y][z] if w == y: if x > z: neighborStateRow = w neighborStateColumn = x - 1 neighborState = myMatrix[neighborStateRow][neighborStateColumn] if (self.xInput - self.zInput) > 2: validJump = 0 else: validJump = 1 elif x 2: validJump = 0 else: validJump = 1 elif x==z: if w > y: neighborStateRow = w - 1 neighborStateColumn = x neighborState = myMatrix[neighborStateRow][neighborStateColumn] if (self.wInput - self.yInput) > 2: validJump = 0 else: validJump = 1 elif w 2: validJump = 0 else: validJump = 1 if(validJump==99 and self.initial_x>0 and self.initial_y>0): self.OutofRange=True if self.matrixPosStart != 2 and self.matrixPosEnd == 0 and neighborState == 1 and validJump == 1: myMatrix[w][x] = 0 myMatrix[neighborStateRow][neighborStateColumn] = 0 myMatrix[y][z] = 1 myMatrix_colors[y][z]=myMatrix_colors[w][x] if sound_enable: self.move_sound.play() else: if(self.OutofRange==True): myMatrix[w][x]=1 self.screen.blit(self.background,(0,0)) row=106 for k in range(7): start=292 for i in range(7): self.pngNumber=myMatrix_colors[k][i] if(myMatrix[k][i]==1): if self.pngNumber==marbleColor: self.screen.blit(self.marble_images[self.pngNumber],(start,row)) else: self.pngNumber-=100 self.screen.blit(self.special_marbles[self.pngNumber],(start,row)) start+=90 row+=90 #reseting the values back self.OutofRange=True self.initial_x=0 self.initial_y=0 self.update_moves() self.display() def changePosition(self): global marbleColor,special_x,special_y self.x=pygame.mouse.get_pos() x=self.x[0] y=self.x[1] x=(x/90)-(300/90) y=(y/90)-(120/90) #self.Number=0 #print "marble color is :",marbleColor if(x>=0 and x<7 and y>=0 and y<7): if self.pressed==False and myMatrix[y][x]==1: myMatrix[y][x]=0 self.Number=myMatrix_colors[y][x] if self.Number>=100: special_x=y special_y=x self.initial_x=y self.initial_y=x self.selected=True self.pressed=True if self.Number==marbleColor: self.marble_rect=self.marble_images[self.Number].get_rect() elif self.Number==25: self.marble_rect=self.marble_images[self.Number].get_rect() else: self.marble_rect=self.special_marbles[self.Number-100].get_rect() self.marble_rect.center=pygame.mouse.get_pos() self.screen.blit(self.background,(0,0)) row=106 for k in range(7): start=292 for i in range(7): self.pngNumber=myMatrix_colors[k][i] if(myMatrix[k][i]==1): if self.pngNumber==marbleColor: self.screen.blit(self.marble_images[self.pngNumber],(start,row)) else: self.pngNumber-=100 self.screen.blit(self.special_marbles[self.pngNumber],(start,row)) start+=90 row+=90 if self.Number==marbleColor: self.screen.blit(self.marble_images[self.Number],self.marble_rect) elif self.Number==25: self.screen.blit(self.marble_images[self.Number],self.marble_rect) else: self.screen.blit(self.special_marbles[self.Number-100],self.marble_rect) def moving(self): row=90 self.screen.blit(self.background,self.marble_rect,self.marble_rect) self.marble_rect.center=pygame.mouse.get_pos() self.screen.blit(self.marble_images[self.Number],self.marble_rect) def noMoreMoves(self): global button1 rollover_once=0 run=1 self.alphasurface = pygame.Surface((1280,825)) self.alphasurface.convert() self.alphasurfacerect = pygame.Rect(0,0,1280,825) self.alphasurface.fill((100,100,100)) self.alphasurface.set_alpha(200) self.screen.blit(self.background, (0,0)) row=106 for k in range(7): start=292 for i in range(7): self.pngNumber=myMatrix_colors[k][i] if(myMatrix[k][i]==1): if self.pngNumber==marbleColor: self.screen.blit(self.marble_images[self.pngNumber],(start,row)) else: self.pngNumber-=100 self.screen.blit(self.special_marbles[self.pngNumber],(start,row)) start+=90 row+=90 self.display() self.screen.blit(self.alphasurface,self.alphasurfacerect) while run: while gtk.events_pending(): gtk.main_iteration() for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key in [K_ESCAPE]):sys.exit() elif event.type == MOUSEBUTTONDOWN: if button1.is_focused(): button1.press() elif event.type == MOUSEBUTTONUP: if button1.status == 1: button1.unpress() self.play_var = 1 run = 0 if self.play_var==1: self.play_var=0 self.reset() self.reset_board() self.SuperLooper() if (button1.rect.collidepoint(pygame.mouse.get_pos()) and rollover_once==0): rollover_once=1 self.allsprites.remove(button1) button1 = simple_button(31,614,'NewBoardOn.png',None) self.allsprites=pygame.sprite.RenderPlain(button1) self.allsprites.draw(self.screen) elif not (button1.rect.collidepoint(pygame.mouse.get_pos())): rollover_once=0 button1 = simple_button(31,614,'NewBoard.png',None) self.allsprites=pygame.sprite.RenderPlain(button1) self.allsprites.draw(self.screen) pygame.display.update() def SuperLooper(self): global button1,helpoff,marbleColor,next_marble,count,sound_enable rollover_once=0 run=1 pygame.init() self.load_things() self.background = pygame.image.load("data/Background2.png") self.play_var=0 self.help_var=0 self.play_sound=False self.pickedSound=0 pygame.mouse.set_cursor((32, 32), (0, 0), ARROW_0, ARROW_1) group=[] empty=() self.displaying_arrow=False self.screen.blit(self.background, (0,0)) button1 = simple_button(31,614,'NewBoard.png',None) self.allsprites=pygame.sprite.RenderPlain(button1) self.allsprites.empty() self.allsprites.draw(self.screen) helpoff=simple_button(970,614,'HelpOff.png',None) self.allspritess=pygame.sprite.RenderPlain(helpoff) self.LoadSprites() self.marble_rect=self.marble_images[self.Number].get_rect() self.marble_rect.center=pygame.mouse.get_pos() #onscreen text marble_text = self.font.render(str(self.updated_text), 1, BROWN_COLOR) marble_textpos = marble_text.get_rect(topleft=(1000,50)) #self.screen.blit(marble_text, marble_textpos) self.screen.blit(self.special_marbles[next_marble-1],(1067,45)) self.rollover_images=[] self.rollover_images.append(pygame.image.load("data/Arrow1.png")) self.rollover_images.append(pygame.image.load("data/Arrow2.png")) self.rollover_images.append(pygame.image.load("data/Arrow3.png")) self.rollover_images.append(pygame.image.load("data/Arrow4.png")) pygame.display.update() while run: #condition for checking for mouse arrows if(self.updated_text==32): if (self.displaying_arrow==False and pygame.mouse.get_pos()[0]>=550 and pygame.mouse.get_pos()[0]<=625 and pygame.mouse.get_pos()[1]>=550 and pygame.mouse.get_pos()[1]<=625): self.screen.blit(self.rollover_images[3],(520,380)) self.displaying_arrow=True if (self.displaying_arrow==False and pygame.mouse.get_pos()[0]>=550 and pygame.mouse.get_pos()[0]<=625 and pygame.mouse.get_pos()[1]>=175 and pygame.mouse.get_pos()[1]<=275): self.screen.blit(self.rollover_images[2],(550,200)) self.displaying_arrow=True if (self.displaying_arrow==False and pygame.mouse.get_pos()[0]>=400 and pygame.mouse.get_pos()[0]<=450 and pygame.mouse.get_pos()[1]>=375 and pygame.mouse.get_pos()[1]<=425): self.screen.blit(self.rollover_images[1],(400,350)) self.displaying_arrow=True if (self.displaying_arrow==False and pygame.mouse.get_pos()[0]>=700 and pygame.mouse.get_pos()[0]<=800 and pygame.mouse.get_pos()[1]>=375 and pygame.mouse.get_pos()[1]<=450): self.screen.blit(self.rollover_images[0],(550,350)) self.displaying_arrow=True if (button1.rect.collidepoint(pygame.mouse.get_pos()) and rollover_once==0): rollover_once=1 self.allsprites.remove(button1) button1 = simple_button(31,614,'NewBoardOn.png',None) self.allsprites=pygame.sprite.RenderPlain(button1) self.allsprites.draw(self.screen) elif not (button1.rect.collidepoint(pygame.mouse.get_pos())): rollover_once=0 self.allsprites.empty() button1 = simple_button(31,614,'NewBoard.png',None) self.allsprites=pygame.sprite.RenderPlain(button1) self.allsprites.draw(self.screen) if (helpoff.rect.collidepoint(pygame.mouse.get_pos()) and rollover_onces==0): rollover_onces=1 self.allspritess.remove(button1) helpoff = simple_button(970,614,'HelpOn.png',None) self.allspritess=pygame.sprite.RenderPlain(helpoff) self.allspritess.draw(self.screen) elif not (helpoff.rect.collidepoint(pygame.mouse.get_pos())): rollover_onces=0 helpoff = simple_button(970,614,'HelpOff.png',None) self.allspritess=pygame.sprite.RenderPlain(helpoff) self.allspritess.draw(self.screen) temp_pos=pygame.mouse.get_pressed() if temp_pos[0]==0 and self.selected==True and self.pressed==True: self.pressed=False self.selected=False self.checkValidMovement() self.Number=25#26 25 self.picked=False self.displaying_arrow=False '''Change the cursor to an arrow''' pygame.mouse.set_cursor((32, 32), (0, 0), ARROW_0, ARROW_1) self.pickedSound=0 if temp_pos[0]==1 : #and self.picked==False: '''Change the cursor to an X''' pygame.mouse.set_cursor((32, 32), (0, 0), CROSS_0, CROSS_1 ) self.picked=True if self.pickedSound == 0: if sound_enable: self.picked_sound.play() self.pickedSound=1 self.changePosition() self.display() while gtk.events_pending(): gtk.main_iteration() for event in pygame.event.get(): if event.type == QUIT or (event.type == KEYDOWN and event.key in [K_ESCAPE]):sys.exit() elif event.type == MOUSEBUTTONDOWN: if button1.is_focused(): button1.press() elif helpoff.is_focused(): helpoff.press() elif event.type == MOUSEBUTTONUP: if button1.status == 1: button1.unpress() self.play_var = 1 run=0 elif helpoff.status == 1: helpoff.unpress() self.help_var = 1 #run=0 if self.play_var==1: self.play_var=0 self.reset() self.reset_board() self.SuperLooper() if self.help_var==1: self.help_var=0 self.help_screen() pygame.display.update() if self.updated_text==28 and self.play_sound==False and count==0: if sound_enable: self.level_sounds[0].play() count+=1 self.play_sound=True elif self.updated_text==24 and self.play_sound==False and count==1: if sound_enable: self.level_sounds[1].play() self.play_sound=False count+=1 elif self.updated_text==20 and self.play_sound==False and count==2: if sound_enable: self.level_sounds[2].play() self.play_sound=True count+=1 elif self.updated_text==16 and self.play_sound==False and count==3: if sound_enable: self.level_sounds[3].play() self.play_sound=True count+=1 elif self.updated_text==12 and self.play_sound==False and count==4: if sound_enable: self.level_sounds[4].play() self.play_sound=True count+=1 elif self.updated_text==8 and self.play_sound==False and count==5: if sound_enable: self.level_sounds[5].play() self.play_sound=True count+=1 elif self.updated_text==4 and self.play_sound==False and count==6: if sound_enable: self.level_sounds[6].play() self.play_sound=True count+=1 if self.updated_moves==0: if self.updated_text==1: if sound_enable: self.level_sounds[7].play() number = 0 run=0 self.noMoreMoves() def help_screen(self): run=True self.alphasurface = pygame.Surface((1280,825)) self.alphasurface.convert() self.alphasurfacerect = pygame.Rect(0,0,1280,825) self.alphasurface.fill((100,100,100)) self.alphasurface.set_alpha(200) self.screen.blit(self.alphasurface,self.alphasurfacerect) self.screen.blit(self.helpscreen,(0,0)) pygame.display.update() while run: while gtk.events_pending(): gtk.main_iteration() for event in pygame.event.get(): if event.type == KEYDOWN or event.type == MOUSEBUTTONDOWN: run =0 def update_moves(self): marblesLeft = 0 movesLeft = 0 i = 0 while i < myMatrixGridSize: # should eventually be length of rows j = 0 while j < myMatrixGridSize: # should eventually be length of columns m = myMatrix[i][j] if m == 1: # there is a marble in the slot marblesLeft = marblesLeft + 1 boundsCheck = i - 1 if boundsCheck >= 0: mn = myMatrix[i -1][j] if mn == 0: # no move directly above pass else: pass boundsCheck = i - 2 if boundsCheck >= 0: mn = myMatrix[i - 2][j] mn2 = myMatrix[i - 1][j] if mn == 0 and mn2 == 1: #print "There is a move above." movesLeft = movesLeft + 1 else: pass else: # there is a move above, but is the slot above that empty pass boundsCheck = i + 1 if boundsCheck < myMatrixGridSize: # needs to be drawn from the number of rows eventually mn = myMatrix[i + 1][j] if mn == 0: # no move directly below pass else: pass boundsCheck = i + 2 if boundsCheck < myMatrixGridSize: mn = myMatrix[i + 2][j] mn2 = myMatrix[i + 1][j] if mn == 0 and mn2 == 1: movesLeft = movesLeft + 1 else: pass else: # there is a move below, but is the slot below that empty pass boundsCheck = j - 1 if boundsCheck >= 0: # needs to be drawn from the number of rows eventually mn = myMatrix[i][j - 1] if mn == 0: # no move directly to the left pass else: pass boundsCheck = j - 2 if boundsCheck >= 0: mn = myMatrix[i][j - 2] mn2 = myMatrix[i][j - 1] if mn == 0 and mn2 == 1: movesLeft = movesLeft + 1 else: pass else: # there is a move below, but is the slot below that empty pass #check right boundsCheck = j + 1 if boundsCheck < myMatrixGridSize: # needs to be drawn from the number of rows eventually mn = myMatrix[i][j + 1] if mn == 0: # no move directly to the right pass else: pass boundsCheck = j + 2 if boundsCheck < myMatrixGridSize: mn = myMatrix[i][j + 2] mn2 = myMatrix[i][j + 1] if mn == 0 and mn2 == 1: movesLeft = movesLeft + 1 else: pass else: # there is a move below, but is the slot below that empty pass else: # There is no marble in the slot pass j = j + 1 i = i + 1 self.updated_text=marblesLeft self.updated_moves= movesLeft return def display(self): global button1,helpoff,next_marble marble_text = self.font.render(str(self.updated_text), 1, BROWN_COLOR) marble_textpos = marble_text.get_rect(topleft=(1000,50)) #self.screen.blit(marble_text, marble_textpos) #flag conditions if(self.updated_text<=28 and self.updated_text>24):# and count==0): self.screen.blit(self.flags[0],(1038,110)) elif(self.updated_text<=24 and self.updated_text>20):# and count==2): self.screen.blit(self.flags[1], (1038,110)) self.play_sound=False elif(self.updated_text<=20 and self.updated_text>16): self.screen.blit(self.flags[2], (1038,110)) self.play_sound=False elif(self.updated_text<=16 and self.updated_text>12): self.screen.blit(self.flags[3],(1038,110)) self.play_sound=False elif(self.updated_text<=12 and self.updated_text>8): self.screen.blit(self.flags[4],(1038,110)) self.play_sound=False elif(self.updated_text<=8 and self.updated_text>4): self.screen.blit(self.flags[5],(1038,110)) self.play_sound=False elif(self.updated_text<=4 and self.updated_text>1): self.screen.blit(self.flags[6], (1038,110)) self.play_sound=False self.screen.blit(self.special_marbles[next_marble-1],(1067,45)) self.allsprites.draw(self.screen) if self.updated_moves>0: self.allspritess.draw(self.screen) def LoadSprites(self): global marbleColor,next_marble """Create the Marbles group""" n=7 row=106 #120 marbleColor = random.randrange(0,23) number=0 next_marble=number+1 row=106 #function for generating the dots using matrix method for k in range(7): start=292 for i in range(7): if(myMatrix[k][i]==1): pngNumber=marbleColor myMatrix_colors[k][i]=pngNumber self.screen.blit(self.marble_images[pngNumber],(start,row)) start+=90 row+=90 for k in range(7): for i in range(7): if(myMatrix[k][i]==3): myMatrix[k][i]=1 def main(): MainWindow = SolitaireMain() MainWindow.SuperLooper() if __name__=="__main__": main()