import random
import pygame
from pygame.locals import *
import sys
class Peg:
def __init__(self, color):
self.color = Row.colors[color]
self.num = color
def clicked(self):
self.num += 1
if(self.num>5):
self.num = 0
self.color = Row.colors[self.num]
class Row:
colors = ['red', 'white', 'blue', 'yellow', 'green', 'orange', 'none']
def __init__(self, solution):
if(not solution):
self.pegs = [Peg(6) for x in range(4)]
else:
self.pegs = [Peg(random.randint(0, 5)) for x in range(4)]
class Board:
def __init__(self):
self.rows = [Row(False) for x in range(12)]
self.solution = Row(True)
pygame.init()
b = Board()
def draw_board(b):
c=0
for x in range(50, 600, 50):
screen.blit(row, (50, x))
for y in range(0, 4):
screen.blit(pegs[b.rows[(int)(x/50)].pegs[y].num], ((84+(52*y), x+1)))
c+=1
screen = pygame.display.set_mode((400, 700))
pygame.display.set_caption('Mastermind')
pegs = [pygame.image.load('images/peg_{}.png'.format(Row.colors[x])) for x in range(7)]
row = pygame.image.load('images/row.png')
draw_board(b)
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.type == MOUSEBUTTONDOWN:
if(event.button==1):
b.rows[0].pegs[0].clicked()
draw_board(b)
pygame.display.update()
有人可以告诉我我做错了什么。在我首先绘制的所有ID之后,当我使用pegs类中的clicked函数时,它不会更新,我使用控制台和print语句来查看它是否实际上正在发生变化。问题是它不会显示更新的颜色。我知道它不是pygame是我的代码。
答案 0 :(得分:1)
从未画过猪0,0
:
def draw_board(b):
c = 0
for x in range(50, 600, 50):
screen.blit(row, (50, x))
for y in range(0, 4):
screen.blit(pegs[b.rows[int(x/50)].pegs[y].num], ((84+(52*y), x+1)))
c += 1
如果您查看此声明:int(x/50)
然后查看x
,您会发现x
始终至少为50
,因此x/50
将始终大于1,因此不会绘制第一行。您可以通过执行与y:
def draw_board(b):
c = 0
for x in range(12):
screen.blit(row, (50, 50 + x * 50))
for y in range(0, 4):
screen.blit(pegs[b.rows[x].pegs[y].num], (84 + 52 * y, 51 + x * 50))
c += 1