Create game without lists

0

what happens is that I must create a game but must not have lists (the truth does not work either but I plan to use them as XD), I just found out and now I do not know how to remove them or how to put it to work. This is the code

import pygame, sys, os, random
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((380, 480))
pygame.display.set_caption('Mastermind!')
GREY = (127,127,127)
BLACK = (0,0,0)
DKGREY = (65,65,65)
WHITE = (255,255,255)
font = pygame.font.SysFont('agencyfb', 24)
clock = pygame.time.Clock()


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:', name
    raise SystemExit, message
if colorkey is not None:
    if colorkey is -1:
        colorkey = image.get_at((0,0))
    image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()

class Button(pygame.sprite.Sprite):
def __init__(self,image):
    pygame.sprite.Sprite.__init__(self)
    self.image, self.rect = load_image(image)
def setCords(self,x,y):
    self.rect.topleft = x,y
    screen.blit(self.image, (x,y))
def pressed(self,mouse):
    if mouse[0] > self.rect.topleft[0]:
        if mouse[1] > self.rect.topleft[1]:
            if mouse[0] < self.rect.bottomright[0]:
                if mouse[1] < self.rect.bottomright[1]:
                    return True
                else: return False
            else: return False
        else: return False
    else: return False


class Board:
def __init__(self):
    self.board = ["e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",
                  "e  e  e  e",]
    self.bwboard = ["e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",
                    "e  e  e  e",]
    self.guess = ["e", "e", "e", "e"]
    self.gx = 270
    self.gy = 260
    self.gby = 420
    self.bluebut = Button('bluepeg.png')
    self.redbut = Button('redpeg.png')
    self.yelbut = Button('yellowpeg.png')
    self.orbut = Button('orangepeg.png')
    self.purpbut = Button('purppeg.png')
    self.greenbut = Button('greenpeg.png')
    self.submitbut = Button('submit.png')
    self.font = pygame.font.SysFont('agencyfb', 18)
    self.font2 = pygame.font.SysFont('agencyfb', 24)


def drawboard(self):
    self.guessline = 1
    self.bx = 30
    self.by = 100
    for row in self.board:
        self.g = str(self.guessline)
        self.text = self.font.render(self.g, 1, (10, 10, 10))
        screen.blit(self.text, (self.bx - 15, self.by))
        self.guessline += 1
        pygame.display.update()
        for col in row:
            if col == "e":
                screen.blit(empty_peg, (self.bx, self.by))
            elif col == "r":
                screen.blit(red_peg, (self.bx, self.by))
            elif col == "b":
                screen.blit(blue_peg, (self.bx, self.by))
            elif col == "g":
                screen.blit(green_peg, (self.bx, self.by))
            elif col == "p":
                screen.blit(purple_peg, (self.bx, self.by))
            elif col == "y":
                screen.blit(yellow_peg, (self.bx, self.by))
            elif col == "o":
                screen.blit(orange_peg, (self.bx, self.by))
            else:
                continue
            self.bx += 35
        self.by += 35
        self.bx = 30
        pygame.display.flip()




def drawbw(self):
    self.bwx = 175
    self.bwy = 110
    for row in self.bwboard:
        for col in row:
            if col == "e":
                screen.blit(bw_empty, (self.bwx, self.bwy))
            elif col == "b":
                screen.blit(bw_black, (self.bwx, self.bwy))
            elif col == "w":
                screen.blit(bw_white, (self.bwx, self.bwy))
            else:
                continue
            self.bwx += 18
        self.bwy += 35
        self.bwx = 175
        pygame.display.flip()


def colorbin(self):
    pygame.draw.rect(screen, BLACK, (self.gx + 3, self.gy + 3, 90,110))
    pygame.draw.rect(screen, GREY, (self.gx,self.gy,90,110))
    self.redbut.setCords(self.gx+10,self.gy+5)
    self.orbut.setCords(self.gx+50,self.gy+5)
    self.yelbut.setCords(self.gx+10, self.gy +40)
    self.greenbut.setCords(self.gx+50, self.gy+40)
    self.bluebut.setCords(self.gx+10, self.gy+75)
    self.purpbut.setCords(self.gx+50, self.gy+75)
    pygame.display.update()

def guessdisplay(self):
    self.bx = 30
    for row in self.guess:
        if row == "e":
            screen.blit(empty_peg, (self.bx, self.gby))
        elif row == "r":
            screen.blit(red_peg, (self.bx, self.gby))
        elif row == "b":
            screen.blit(blue_peg, (self.bx, self.gby))
        elif row == "g":
            screen.blit(green_peg, (self.bx, self.gby))
        elif row == "p":
            screen.blit(purple_peg, (self.bx, self.gby))
        elif row == "y":
            screen.blit(yellow_peg, (self.bx, self.gby))
        elif row == "o":
            screen.blit(orange_peg, (self.bx, self.gby))
        else:
            continue
        self.bx += 35
        pygame.display.flip()       

def pegcheck(self, guess):
    self.strikes1 = []
    self.strikes2 = []
    self.blackpeg=0
    self.whitepeg=0
    self.bwcount = []
    for i in range(len(guess)):
        if guess[i] == solution[i]:
            self.blackpeg += 1
            self.strikes1.append(i)
            self.strikes2.append(i)
            self.bwcount.append("b")
    for x in range(len(solution)):
        for y in range(len(solution)):
            if x not in self.strikes1 and y not in self.strikes2:
                if guess[x] == solution[y]:
                    self.whitepeg += 1
                    self.strikes1.append(x)
                    self.strikes2.append(i)
                    self.bwcount.append("w")
        self.bwboard[turn] = self.bwcount

def win(self):
    screen.blit(winbg, (0,0))
    pygame.display.flip()
    pygame.time.delay(5000)
    exit()

def lose(self):
    screen.blit(losebg, (0,0))
    self.bx = 115
    for row in solution:
        if row == "e":
            screen.blit(empty_peg, (self.bx, 400))
        elif row == "r":
            screen.blit(red_peg, (self.bx, 400))
        elif row == "b":
            screen.blit(blue_peg, (self.bx, 400))
        elif row == "g":
            screen.blit(green_peg, (self.bx, 400))
        elif row == "p":
            screen.blit(purple_peg, (self.bx, 400))
        elif row == "y":
            screen.blit(yellow_peg, (self.bx, 400))
        elif row == "o":
            screen.blit(orange_peg, (self.bx, 400))
        else:
            continue
        self.bx += 35
    pygame.display.update()
    pygame.time.delay(5000)
    exit()

def getanswer():
#genera la secuencia que el jugador debe adivinar
availcolors = ("r", "o", "y", "g", "b", "p")
answer = [random.choice(availcolors) for i in range(4)]
return answer

def drawbg():
background, bg_rect = load_image('mmbg2.jpg')
screen.blit(background, (0,0))
pygame.draw.line(screen, BLACK, (30, 55), (350, 55), 2)
pygame.draw.line(screen, DKGREY, (32,57), (352, 57), 2)
pygame.draw.line(screen, BLACK, (30, 380), (350, 380), 2)
pygame.draw.line(screen, DKGREY, (32,382), (352, 382), 2)
heading_text = font.render("Guesses", 1, (10, 10, 10))
heading_textpos = (67, 65)
current_guess_text = font.render('Current Guess', 1, (10,10,10))
current_guesspos = (44, 385)
screen.blit(current_guess_text, current_guesspos)
screen.blit(heading_text, heading_textpos)
pygame.display.update()

empty_peg, empty_rect = load_image('mmempty.png')
red_peg, red_peg_rect = load_image('redpeg.png')
blue_peg, blue_peg_rect = load_image('bluepeg.png')
green_peg, green_peg_rect = load_image('greenpeg.png')
purple_peg, purple_peg_rect = load_image('purppeg.png')
yellow_peg, yellow_peg_rect = load_image('yellowpeg.png')
orange_peg, orange_peg_rect = load_image('orangepeg.png')
bw_empty, bw_empty_rect = load_image('bwempty1.png')
bw_white, bw_white_rect = load_image('bwwhite.png')
bw_black, bw_black_rect = load_image('bwblack.png')
winbg, winbg_rect = load_image('mmbgwin.jpg')
losebg, losebg_rect = load_image('mmbglose.jpg')

#Main

drawbg()

board = Board()

solution = getanswer()
print solution
turn = 0
board.drawboard()
board.colorbin()
board.drawbw()
board.guessdisplay()
deltat = clock.tick(10)
guessnum = 0
guessresult = []
pos = pygame.mouse.get_pos()

while turn <= 8:
for event in pygame.event.get():
    if event.type == QUIT:
        exit()
    elif turn == 8:
        board.lose()
    elif event.type == MOUSEBUTTONDOWN and guessnum < 4:
        pos = pygame.mouse.get_pos()
        if board.bluebut.pressed(pos) == True:
            board.guess[guessnum] = "b"
            board.guessdisplay()
            guessnum += 1
        elif board.yelbut.pressed(pos) == True:
            board.guess[guessnum] = "y"
            board.guessdisplay()
            guessnum += 1

        elif board.orbut.pressed(pos) == True:
            board.guess[guessnum] = "o"
            board.guessdisplay()
            guessnum += 1

        elif board.purpbut.pressed(pos) == True:
            board.guess[guessnum] = "p"
            board.guessdisplay()
            guessnum += 1

        elif board.greenbut.pressed(pos) == True:
            board.guess[guessnum] = "g"
            board.guessdisplay()
            guessnum += 1

        elif board.redbut.pressed(pos) == True:
            board.guess[guessnum] = "r"
            board.guessdisplay()
            guessnum += 1
        else:
            continue
    elif guessnum == 4:
        board.board[turn] = board.guess
        board.drawboard()
        board.pegcheck(board.guess)
        board.drawbw()
        board.guess = ["e", "e", "e", "e"]
        turn += 1
        board.guessdisplay()
        board.drawbw()
        guessnum = 0
        if board.blackpeg == 4:
            board.win()
            break   
    else:
        continue

If you could help me convert it without lists and give me some suggestions to improve it, I would be very grateful u.u

    
asked by Wolf 06.10.2018 в 04:29
source

0 answers