Python插值字符串格式,打造程序文本界面。
(本笔记适合熟悉Python字符串的 coder 翻阅)
Python 官网:https://www.python.org/
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
本文质量分:
CSDN质量分查询入口:http://www.csdn.net/qc
题目描述截屏图片
本笔记重在说明“文本界面”,示例代码借用了我回答该问题时手打的代码,据我的理解和喜好更改了部分“代码逻辑”:让两个玩家住到同一个类中,不那么生分。分别统计两个玩家总分,游戏结束时,判定赢家。😜这样子,达成了我认为的“更合理代码”。
利用Python插值字符串格式化,轻松写意,自由自在,让print()更可爱惹人。😄
class Game:
clear = '\033[2J' # Linux清屏字符串。
wait = f"{'(任意键继续……)':^34}\n" # 暂停提示字符串。
rule = range(100) # 备选随机得分。
topScore = countScoreA = countScoreB = 0 # 最高分、玩家总分初值。
def __init__(self, name, *player):
self.name = name
self.pA, self.pB = player
代码运行效果截屏图片
菜单选择错误
def menu(self):
print(f"{self.clear}\n{'':=^40}\n\n{f' {self.name} ':^38}\n\n{'':~^40}\n")
for k, i in enumerate(['游戏开始', '游戏暂停', '游戏结束']):
print(f"{f'{k+1}. {i}':^36}")
print(f"\n{'':=^40}\n")
代码运行效果截屏图片
def startGame(self):
from random import choices
print(f"{self.clear}\n{f' {self.name}游戏 ':=^36}\n\n{f' {self.pA}和{self.pB}开始游戏 ':.^31}")
a, b = choices(self.rule, k=2) # 随机给出游戏分数(0~100)。
self.countScoreA += a
self.countScoreB += b
score = a if a > b else b
self.topScore = score if self.topScore < score else self.topScore # 更新记录游戏的最高分。
print(f"\n{f' 当前单局最高分:{self.topScore:>3} ':~^32}\n\n{f' {self.pA}当前得分:{a:>3} ':^33}\n{f' {self.pB}当前得分:{b:>3} ':^33}\n\n{'':=^40}")
input(self.wait)
代码运行效果截屏图片
def pauseGame(self):
print(f"\n{f' 暂停{self.name}游戏 ':.^34}\n")
input(self.wait)
代码运行效果截屏图片
def exitGame(self):
print(self.clear)
if not self.topScore:
print(f"\n{f' 游戏还没开始呢!':~^32}\n")
input(self.wait)
self.play()
green = '\033[32m'
off = '\033[0m'
yellow = '\033[33m'
print(f"\n{f' {self.name}游戏 ':=^36}\n{green}\n{' 已退出游戏 ':.^35}\n{off}{yellow}\n{f' 期待下次来玩儿 ':~^33}\n{off}")
代码运行效果截屏图片
def showScore(self):
winer = self.pA if self.countScoreA > self.countScoreB else self.pB
print(f"{self.clear}\n{f' {self.name}游戏 ':=^36}\n\n{' Game is Over! ':.^40}\n\n{f' 单局游戏最高分:{self.topScore:>3} ':~^32}\n\n{f' {self.pA}得分:{self.countScoreA} ':^36}\n{f' {self.pB}得分:{self.countScoreB} ':^36}\n\n{f' {winer}赢了!':*^35}\n\n{'':=^40}\n")
根据菜单if分支调用功能模块完成菜单指令
def play(self):
self.menu()
choice = input(f"{'请选择:':>12}")
if choice == '1':
self.startGame()
elif choice == '2':
self.pauseGame()
elif choice == '3':
self.exitGame()
self.showScore()
exit()
else:
print(f"\n{f' 菜单选择错误!':~^34}\n")
input(self.wait)
self.play() # 调用自己实现游戏菜单循环。
类实例调用play函数开始游戏
if __name__ == '__main__':
Game("扫雷", "小苏", "小帅").play() # 开始游戏。
(源码较长,点此跳过源码)
#!/sur/bin/nve python
# coding: utf-8
class Game:
clear = '\033[2J' # Linux清屏字符串。
wait = f"{'(任意键继续……)':^34}\n"
rule = range(100) # 备选随机得分。
topScore = countScoreA = countScoreB = 0 # 得分初值。
def __init__(self, name, *player):
self.name = name
self.pA, self.pB = player
def menu(self):
print(f"{self.clear}\n{'':=^40}\n\n{f' {self.name} ':^38}\n\n{'':~^40}\n")
for k, i in enumerate(['游戏开始', '游戏暂停', '游戏结束']):
print(f"{f'{k+1}. {i}':^36}")
print(f"\n{'':=^40}\n")
def startGame(self):
from random import choices
print(f"{self.clear}\n{f' {self.name}游戏 ':=^36}\n\n{f' {self.pA}和{self.pB}开始游戏 ':.^31}")
a, b = choices(self.rule, k=2) # 随机给出游戏分数(0~100)。
self.countScoreA += a
self.countScoreB += b
score = a if a > b else b
self.topScore = score if self.topScore < score else self.topScore # 更新记录游戏的最高分。
print(f"\n{f' 当前单局最高分:{self.topScore:>3} ':~^32}\n\n{f' {self.pA}当前得分:{a:>3} ':^33}\n{f' {self.pB}当前得分:{b:>3} ':^33}\n\n{'':=^40}")
input(self.wait)
def pauseGame(self):
print(f"\n{f' 暂停{self.name}游戏 ':.^34}\n")
input(self.wait)
def exitGame(self):
print(self.clear)
if not self.topScore:
print(f"\n{f' 游戏还没开始呢!':~^32}\n")
input(self.wait)
self.play()
green = '\033[32m'
off = '\033[0m'
yellow = '\033[33m'
print(f"\n{f' {self.name}游戏 ':=^36}\n{green}\n{' 已退出游戏 ':.^35}\n{off}{yellow}\n{f' 期待下次来玩儿 ':~^33}\n{off}")
def showScore(self):
winer = self.pA if self.countScoreA > self.countScoreB else self.pB
print(f"{self.clear}\n{f' {self.name}游戏 ':=^36}\n\n{' Game is Over! ':.^40}\n\n{f' 单局游戏最高分:{self.topScore:>3} ':~^32}\n\n{f' {self.pA}得分:{self.countScoreA} ':^36}\n{f' {self.pB}得分:{self.countScoreB} ':^36}\n\n{f' {winer}赢了!':*^35}\n\n{'':=^40}\n")
def play(self):
self.menu()
choice = input(f"{'请选择:':>12}")
if choice == '1':
self.startGame()
elif choice == '2':
self.pauseGame()
elif choice == '3':
self.showScore()
input(self.wait)
self.exitGame()
exit()
else:
print(f"\n{f' 菜单选择错误!':~^34}\n")
input(self.wait)
self.play() # 调用自己实现游戏菜单循环。
if __name__ == '__main__':
Game("扫雷", "小苏", "小帅").play() # 开始游戏。
我的HOT博:
本次共计收集 246 篇博文笔记信息,总阅读量 40.46w,平均阅读量 1644。已生成 16 篇阅读量不小于 4000 的博文笔记索引链接。数据采集于 2023-10-12 05:41:03 完成,用时 4 分 41.10 秒。
精品文章:
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
CSDN实用技巧博文: