Example #1
0
def is_safe(coords, board):
    x, y = coords
    if (not out_of_bounds(coords, board)
            and board.getBoard()[x][y][0] % 10 != 1
            and board.getBoard()[x][y][1] < 1):
        return True
    else:
        return False
Example #2
0
def getTileSprites(board):
    tileSprites = pygame.sprite.Group()

    for row in board.getBoard():
        for tile in row:
            tileSprites.add(tile)

    return tileSprites
Example #3
0
def printBoard():

	text = ""
	i = 9
	text += text_info( "  a b c d e f g h\n" )
	for row in getBoard():
		i -= 1
		text += text_info( str( i ) + " " )
		for piece in row:
			if piece == " ":
				text += text_board( " " )
			else:
				text += text_board( piecesPrint[ piece[1] ][ piece[0] ], piece[1] )
				
			#elif piece[1] == colors["white"]:
			#	text += text_white( piece[0] ) + text_white( " " )
			#elif piece[1] == colors["black"]:
			#	text += text_black( piece[0] ) + text_black( " " )
		text += newline_board()
	
	clearScreen()
	print( text + "\n" )
Example #4
0
def main():
	global board, settings

	pygame.init()
	pygame.font.init()
	screen = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
	pygame.display.set_caption("2048 by 74Genesis")
	font = pygame.font.Font("font/ClearSans-Bold.ttf", 18)
	fontScore = pygame.font.Font("font/ClearSans-Bold.ttf", 13)

	#Основной "холст"
	mainSur = pygame.Surface((WIN_WIDTH, WIN_HEIGHT))
	mainSur.fill(pygame.Color("#faf8ef"))

	# Кнопка Новая игра
	restartBut = pygame.Surface((100, 50))
	restartBut.fill(pygame.Color("#8f7a66"))
	#текст New game
	nGame = font.render("New Game", True, (249,246,242))	

	# Счет
	score = pygame.Surface((80, 50))
	score.fill(pygame.Color("#bbada0"))
	#score
	scoreText = font.render("Score", True, (249,246,242))
	#score число
	scoreNum = None

	# Лучший счет
	bestScore = pygame.Surface((80, 50))
	bestScore.fill(pygame.Color("#bbada0"))
	bestText = font.render("Best", True, (249,246,242))

	#фон доски
	boardBg = pygame.Surface((BOARD_SIZE, BOARD_SIZE))
	boardBg.fill(pygame.Color("#bbada0"))

	board = board.Board()
	# board.board = [[2, 256, 3, 7],
 #       		  	  [2, 128, 4, 8],
	#    		  	  [1024, 64, 5, 9],
	#    		  	  [1024, 32, 6, 34]]

	#Нарисовать заполненные клетки
	cellObjects, textObjects = board.drowFullCells(cellGroup, textGroup)

	pygame.key.set_repeat(1, 400)
	clock = pygame.time.Clock()
	scoreNumX = 0
	while 1:
		clock.tick(400)
		up=down=left=right=False
		#Закрыть окно
		for e in pygame.event.get():
			#Перед выходом сохранить в файл все настройки
			if e.type == pygame.QUIT:
				settings = settings.Settings()
				settings.changeOption("Score", board.getScore())
				settings.changeOption("Best", board.getBest())
				settings.changeOption("StartGame", False)
				settings.changeOption("Board", board.getBoard())
				raise SystemExit

			#Проверять нажатие клавиши только если не осуществляется движение доски
			if not board.startMove:
				if e.type == pygame.KEYDOWN:
					if e.key == pygame.K_UP:
						up = True
					elif e.key == pygame.K_DOWN:
						down = True
					elif e.key == pygame.K_LEFT:
						left = True
					elif e.key == pygame.K_RIGHT:
						right = True
			if e.type == pygame.MOUSEBUTTONDOWN:
				mousePos = pygame.mouse.get_pos()
				if mousePos[0] > ELEM_IND and \
				   mousePos[0] < ELEM_IND+100 and \
				   mousePos[1] > ELEM_IND and \
				   mousePos[1] < ELEM_IND+50:
					board.newGame()
					#Удалить старые спрайты клеток и текста
					for key in cellObjects:
						cellGroup.remove(cellObjects[key])
					for key in textObjects:
						textGroup.remove(textObjects[key])
					cellObjects, textObjects = board.drowFullCells(cellGroup, textGroup) 


		#Если нажата кнопка управления полем
		if up or down or left or right:
			board.setStartMove(True) #начинаем передвижение
			board.setBoardMove(False) #Пересчитана ли доска
			#запоминаем нажатую кнопку
			if up: board.setKeyDown("up")
			if down: board.setKeyDown("down")
			if left: board.setKeyDown("left")
			if right: board.setKeyDown("right")

		#Пока активировано передвижение, изменяем доску
		if board.getStartMove():
			if board.getKeyDown() == "up": up = True
			if board.getKeyDown() == "down": down = True
			if board.getKeyDown() == "left": left = True
			if board.getKeyDown() == "right": right = True
			
			if not board.getBoardMove():
				nBoard, moveMap, nScore = board.move(up, down, left, right)
				board.setNewBoard(nBoard)
				board.setMoveMap(moveMap)
				board.setNewScore(nScore)

				board.setBoardMove(True)

			updateRes = board.update(cellObjects, textObjects, board.moveMap) #двигает клетки

			if updateRes: #Все клетки передвинуты
				board.setBoardMove(False)
				if len(board.getMoveMap()) > 0: # если ячейки двигались
					boardNewNum = board.totalCell(board.getNewBoard()) #добавить ещё одну цифру
					board.setBoard(boardNewNum) #сохранить новую доску
				
				#Удалить старые спрайты клеток и текста
				for key in cellObjects:
					cellGroup.remove(cellObjects[key])
				for key in textObjects:
					textGroup.remove(textObjects[key])

				cellObjects, textObjects = board.drowFullCells(cellGroup, textGroup) #Создать новые
				board.setStartMove(False) #Индикатор движения выключить

				board.setScore(board.getNewScore()) #Обновить счет

				#Если лучший счет меньше основного, обновить его
				if board.getBest() < board.getScore():
					board.setBest(board.getScore())

				#Проверяем не проиграл ли пользователь
				# if board.isMove(board.getNewBoard()):
				# 	print("Конец игры")

				#Победил ли пользователь
				# if board.winner(board.getNewBoard()):
				# 	print("Победитель !")

		#Создание числа "Счет" и "Лучший счет"
		scoreNum = fontScore.render(str(board.getScore()), True, (249,246,242))
		bestNum = fontScore.render(str(board.getBest()), True, (249,246,242))

		#Рисование всех элементов
		#Главный "Холст"
		screen.blit(mainSur, (0,0)) 
		#Новая игра
		screen.blit(restartBut, (ELEM_IND,ELEM_IND)) 
		#New game
		screen.blit(nGame, (ELEM_IND+7, ELEM_IND+11)) 
		#cчет
		screen.blit(score, (115+ELEM_IND,ELEM_IND)) 
		screen.blit(scoreText, (147, ELEM_IND)) #Текст score
		scoreNumX = numAlignCenter(str(board.getScore()), 115+ELEM_IND, 80) #позиция числа
		screen.blit(scoreNum, (scoreNumX, ELEM_IND+25)) #Число score
		#Лучший счет
		screen.blit(bestScore, (115+80+ELEM_IND*2,ELEM_IND)) 
		screen.blit(bestText, (115+80+ELEM_IND*2 + 23, ELEM_IND)) #Текст best
		bestNumX = numAlignCenter(str(board.getBest()), 115+80+ELEM_IND*2, 80) #позиция числа
		screen.blit(bestNum, (bestNumX, ELEM_IND+25)) #Число best
		#фон доски
		screen.blit(boardBg, (ELEM_IND,ELEM_IND*2 + 50)) 

		board.drowCellBack(screen, GAME_BEGIN_X, GAME_BEGIN_Y) #пустые клетки
			
		cellGroup.draw(screen)
		textGroup.draw(screen)
		pygame.display.update()
Example #5
0
import board

if __name__ == "__main__":
    example = board.getBoard()

    print(example)