如何让一个字母保持一种颜色,而其余字母保持另一种颜色?
How do you keep one letter a color and the rest another color?
tl;dr 井字游戏输出全部为蓝色,只希望 x 为蓝色,o 为红色
在 class 中,我们正在尝试制作一个井字游戏,目前我们正在尝试修改代码,以便只有 X 是蓝色,O 是红色,但是当我们导入 colorama 时它为所有输出着色。我知道所有文本都将以蓝色打印。所以本质上它应该是这样的:
我也提供了游戏的代码。
import random
import colorama
from colorama import Fore, Style
print(Fore.BLUE + "Hello World")
player_1_pick = ""
player_2_pick = ""
if (player_1_pick == "" or player_2_pick == ""):
if (player_1_pick == ""):
player_1_pick = "Player 1"
if (player_2_pick == ""):
player_2_pick = "Player 2"
else:
pass
board = ["_"] * 9
def print_board():
print(board[0] + '|' + board[1] + '|' + board[2])
print(board[3] + '|' + board[4] + '|' + board[5])
print(board[6] + '|' + board[7] + '|' + board[8])
print_board()
if (random.randint(1,2) == 1):
player_1_pick = input(player_1_pick + ", choose X or O: ").upper()
if (player_1_pick == "X"):
player_2_pick = "O"
while True:
x = input('Pick a number from 0-8')
x = int(x)
board[x] = 'X'
print_board()
然后我们决定打开 python 的另一个选项卡(我们正在使用 repl.it)以尝试在隔离环境中解决问题,我们想出了:
import random
import colorama
from colorama import Fore, Style
def getPieceLabel(piece):
if (piece == 1):
return "|" + color.PURPLE + color.BOLD + "X" + color.END + "|"
elif (piece == 2 ):
return "|" + color.BLUE + color.BOLD + "O"
+ "|"
else:
return color.BOLD + "|_|" + color.END
board = ["_"] * 9
def print_board():
print(board[0] + '|' + board[1] + '|' + board[2])
print(board[3] + '|' + board[4] + '|' + board[5])
print(board[6] + '|' + board[7] + '|' + board[8])
print(Style.RESET_ALL)
while True:
x = input('Pick a number from 0-8')
x = int(x)
board[x] = 'X'
print_board()
我们需要一些帮助来解决这个问题 out/what 问题是。
这是一个代码,可以为不同的项目打印不同的颜色(也在 repl.it 上测试过!)。
import random
import colorama
from colorama import Fore, Style
print(Fore.BLUE + "Tic Tac Toe")
Style.RESET_ALL
player_1_pick = ""
player_2_pick = ""
if (player_1_pick == "" or player_2_pick == ""):
if (player_1_pick == ""):
player_1_pick = "Player 1"
if (player_2_pick == ""):
player_2_pick = "Player 2"
else:
pass
board = ["_"] * 9
def print_board():
for i in range(0, 3):
for j in range(0, 3):
if (board[i*3 + j] == 'X'):
print(Fore.BLUE + board[i*3 + j], end = '')
elif (board[i*3 + j] == 'O'):
print(Fore.RED + board[i*3 + j], end = '')
else:
print(board[i*3 + j], end = '')
print(Style.RESET_ALL, end = '')
if j != 2:
print('|', end = '')
print() # new line
print_board()
if (random.randint(1,2) == 1):
player_1_pick = input(player_1_pick + ", choose X or O: ").upper()
if (player_1_pick == "X"):
player_2_pick = "O"
while True:
x = input('Pick a number from 0-8: ')
x = int(x)
board[x] = 'X'
print_board()
为什么? 当您使用 Back.RED
或 Fore.RED
时,它只会更改全局输出颜色(而不只是那个特定的 print()
陈述)。这意味着如果您想要不同的颜色,您必须为每个要打印的项目更改颜色。这就是我在 print_board()
.
下所做的
由于您要打印 3x3 矩阵(或二维数组)以及元素或项目之间的边界,我不得不使用两个循环以不同颜色(根据需要)打印它们中的每一个。
注意:该程序可以运行,但我认为缺少一些逻辑,因为该游戏仅适用于第一个玩家;没有第二个播放器(甚至系统播放器)。这超出了这个答案的范围。
tl;dr 井字游戏输出全部为蓝色,只希望 x 为蓝色,o 为红色
在 class 中,我们正在尝试制作一个井字游戏,目前我们正在尝试修改代码,以便只有 X 是蓝色,O 是红色,但是当我们导入 colorama 时它为所有输出着色。我知道所有文本都将以蓝色打印。所以本质上它应该是这样的:
import random
import colorama
from colorama import Fore, Style
print(Fore.BLUE + "Hello World")
player_1_pick = ""
player_2_pick = ""
if (player_1_pick == "" or player_2_pick == ""):
if (player_1_pick == ""):
player_1_pick = "Player 1"
if (player_2_pick == ""):
player_2_pick = "Player 2"
else:
pass
board = ["_"] * 9
def print_board():
print(board[0] + '|' + board[1] + '|' + board[2])
print(board[3] + '|' + board[4] + '|' + board[5])
print(board[6] + '|' + board[7] + '|' + board[8])
print_board()
if (random.randint(1,2) == 1):
player_1_pick = input(player_1_pick + ", choose X or O: ").upper()
if (player_1_pick == "X"):
player_2_pick = "O"
while True:
x = input('Pick a number from 0-8')
x = int(x)
board[x] = 'X'
print_board()
然后我们决定打开 python 的另一个选项卡(我们正在使用 repl.it)以尝试在隔离环境中解决问题,我们想出了:
import random
import colorama
from colorama import Fore, Style
def getPieceLabel(piece):
if (piece == 1):
return "|" + color.PURPLE + color.BOLD + "X" + color.END + "|"
elif (piece == 2 ):
return "|" + color.BLUE + color.BOLD + "O"
+ "|"
else:
return color.BOLD + "|_|" + color.END
board = ["_"] * 9
def print_board():
print(board[0] + '|' + board[1] + '|' + board[2])
print(board[3] + '|' + board[4] + '|' + board[5])
print(board[6] + '|' + board[7] + '|' + board[8])
print(Style.RESET_ALL)
while True:
x = input('Pick a number from 0-8')
x = int(x)
board[x] = 'X'
print_board()
我们需要一些帮助来解决这个问题 out/what 问题是。
这是一个代码,可以为不同的项目打印不同的颜色(也在 repl.it 上测试过!)。
import random
import colorama
from colorama import Fore, Style
print(Fore.BLUE + "Tic Tac Toe")
Style.RESET_ALL
player_1_pick = ""
player_2_pick = ""
if (player_1_pick == "" or player_2_pick == ""):
if (player_1_pick == ""):
player_1_pick = "Player 1"
if (player_2_pick == ""):
player_2_pick = "Player 2"
else:
pass
board = ["_"] * 9
def print_board():
for i in range(0, 3):
for j in range(0, 3):
if (board[i*3 + j] == 'X'):
print(Fore.BLUE + board[i*3 + j], end = '')
elif (board[i*3 + j] == 'O'):
print(Fore.RED + board[i*3 + j], end = '')
else:
print(board[i*3 + j], end = '')
print(Style.RESET_ALL, end = '')
if j != 2:
print('|', end = '')
print() # new line
print_board()
if (random.randint(1,2) == 1):
player_1_pick = input(player_1_pick + ", choose X or O: ").upper()
if (player_1_pick == "X"):
player_2_pick = "O"
while True:
x = input('Pick a number from 0-8: ')
x = int(x)
board[x] = 'X'
print_board()
为什么? 当您使用 Back.RED
或 Fore.RED
时,它只会更改全局输出颜色(而不只是那个特定的 print()
陈述)。这意味着如果您想要不同的颜色,您必须为每个要打印的项目更改颜色。这就是我在 print_board()
.
由于您要打印 3x3 矩阵(或二维数组)以及元素或项目之间的边界,我不得不使用两个循环以不同颜色(根据需要)打印它们中的每一个。
注意:该程序可以运行,但我认为缺少一些逻辑,因为该游戏仅适用于第一个玩家;没有第二个播放器(甚至系统播放器)。这超出了这个答案的范围。