Ich habe dieses kleine Chase -Spiel mit dem gesegneten Modul geschrieben. Während des Schreibens habe ich es mit urxvt getestet. Es funktioniert genau, wie ich in diesem Terminalemulator möchte. Wenn ich jedoch versuche, das Spiel in PowerShell unter Windows, den Roh -Linux -Tty oder sogar anderen Linux -Terminal -Emulatoren wie Xterm oder Alacritty auszuführen, bilden die Fliesen/Quadrate kein Gitter, wie sie sollten, und stapeln sich stattdessen auf der linken Seite des Bildschirms. Die Terminal -Emulatoren, die das Raster fälschlicherweise anzeigen, liefern "wahr" für gesegnete.term.does_Styling und .is_a_tty, und die Öffnungs- und Schließtextaufforderungen werden an den richtigen Stellen auf dem Bildschirm gedruckt. Code unten: < /p>
import sys, curses, blessed, time, random
from random import randrange
from blessed import *
term = blessed.Terminal()
# --- MISCELLANEOUS VARIABLES ---
direction = ''
gameon = True
tilelist = []
#name = ''
# --- CLASSES ---
class Tile(object):
'''A map tile.'''
def __init__(self, name, number, xpos, ypos):
'''Constructor
pre: x/y position on terminal, whether a unit occupies the space, and the space's status e.g. wall, explosion, empty, etc
post: tile object created with above variables defined'''
self._name = name
self._number = number
self._xpos = xpos
self._ypos = ypos
def __str__(self):
return self._name
class Player(object):
'''player'''
def __init__(self, name, ontile, hp, color, gold):
self._name = name
self._ontile = ontile
self._hp = hp
self._color = color
self._gold = gold
def __str__(self):
return self._name
def setupPlayer(self):
playerinitpos = randrange(0, 4)
if playerinitpos == 0:
self._ontile = 1
if playerinitpos == 1:
self._ontile = 7
if playerinitpos == 2:
self._ontile = 43
if playerinitpos == 3:
self._ontile = 49
self._hp = randrange(900, 1200)
def movePlayer(self, direction):
if self._ontile > 49:
raise ValueError
if direction == 'quit':
self._hp = 0
if direction == 'u':
if self._ontile < 8:
return
else:
self._ontile = self._ontile - 7
return self._ontile
if direction == 'r':
if self._ontile >= 49:
return
if self._ontile % 7 == 0:
return
else:
self._ontile = self._ontile + 1
return self._ontile
if direction == 'd':
if self._ontile > 42:
return
else:
self._ontile = self._ontile + 7
return self._ontile
if direction == 'l':
if self._ontile 0:
i._color.sort
direction = i._color[0]
return direction
elif cand == 0:
direction = 'none'
return direction
# enemy deals damage
if cand == 2:
other._hp -= 40
if cand == 1:
other._hp -= 700
# gold stuff
def drawGold(self):
for i in tilelist:
if self._ontile == i._number:
print(term.move_xy(i._xpos + 1, i._ypos - 1) + term.goldenrod(' ● '))
def moveGold(self):
self._ontile = randrange(1, 49)
def goldFoundCheck(self, other):
if self._ontile == other._ontile:
other._gold += randrange(1, 10)
self.moveGold()
def gethp(self):
scale = ' '
if self._hp >= 1100 and self._hp < 1300:
scale = '██████'
elif self._hp >= 1000 and self._hp < 1100:
scale = '█████▌'
elif self._hp >= 900 and self._hp < 1000:
scale = '█████ '
elif self._hp >= 800 and self._hp < 900:
scale = '████▌ '
elif self._hp >= 700 and self._hp < 800:
scale = '████ '
elif self._hp >= 600 and self._hp < 700:
scale = '███▌ '
elif self._hp >= 500 and self._hp < 600:
scale = '███ '
elif self._hp >= 400 and self._hp < 500:
scale = '██▌ '
elif self._hp >= 300 and self._hp < 400:
scale = '██ '
elif self._hp >= 200 and self._hp < 300:
scale = '█▌ '
elif self._hp >= 100 and self._hp < 200:
scale = '█ '
elif self._hp >= 50 and self._hp < 100:
scale = '▌ '
elif self._hp > 49:
scale = ' '
return scale
# --- FUNCTIONS ---
# player stuff
def getPlayerName():
eraseAllTiles()
term.clear()
enterstr = 'please enter your name'
d = 4
for i in range(22):
print(term.move_xy(d, 2) + term.bold(enterstr))
d += 1
wait = .001 * randrange(1, 30)
time.sleep(wait)
print(term.move_xy(26, 2) + term.blink(':'))
# fun formatting / ani
def deleteLine(l, x, y):
c = 0
for i in range(l + 1):
print(term.move_xy((x + l) - c, y) + term.bold(' '))
c += 1
wait = .001 * randrange(1, 10)
time.sleep(wait)
def deleteMultiLine(l, d, x, y):
c = 0
dc = 0
for i in range((l + 1) * d + 1):
print(term.move_xy((x + l) - c, y + dc) + term.bold(' '))
dc += 1
if dc == d:
dc = 0
c+= 1
wait = .001 * randrange(1, 15)
time.sleep(wait)
def deleteFastMultiLine(l, d, x, y):
c = 0
dc = 0
for i in range((l + 1) * d + 1):
print(term.move_xy((x + l) - c, y + dc) + term.bold(' '))
dc += 1
if dc == d:
dc = 0
c+= 1
wait = .0005
time.sleep(wait)
# tile stuff
def makeTiles():
xplace = 70
yplace = 0
for i in range(1, 50):
if (i - 1) % 7 == 0:
yplace -= 3
xplace -= 42
tilename = ('tile' + str(i))
tilelist.append(Tile(tilename, i, xplace, yplace))
xplace += 6
def drawTile(i):
print(term.move_xy(i._xpos, i._ypos) + term.bold('╭───╮'))
print(term.move_xy(i._xpos, (i._ypos - 1)) + term.bold('│ │'))
print(term.move_xy(i._xpos, (i._ypos - 2)) + term.bold('╰───╯'))
def drawTileColor(i, color):
print(term.move_xy(i._xpos, i._ypos) + color + ('╭───╮'))
print(term.move_xy(i._xpos, (i._ypos - 1)) + color + ('│ │'))
print(term.move_xy(i._xpos, (i._ypos - 2)) + color + ('╰───╯'))
def drawAllTiles():
for i in tilelist:
drawTile(i)
time.sleep(0.005)
def drawFastAllTiles():
for i in tilelist:
drawTile(i)
def eraseTile(i):
print(term.move_xy(i._xpos, i._ypos) + term.bold(' '))
print(term.move_xy(i._xpos, (i._ypos - 1)) + term.bold(' '))
print(term.move_xy(i._xpos, (i._ypos - 2)) + term.bold(' '))
def eraseAllTiles():
for i in tilelist:
eraseTile(i)
time.sleep(0.005)
# input
def getNameInput():
p = 0
name = ''
while True:
print(term.move_xy(28, 2) + term.blink('▂▂▂'))
for i in range(4):
if len(name) >= 3:
print(term.move_xy(26, 2) + term.bold(':'))
print(term.move_xy(11, 3) + term.blink('press any key'))
inp = term.inkey()
if inp == '\n':
break
p += 1
if len(name)
Ich bin stumpf. Jede Unterstützung, die Sie anbieten können, schätze ich!>
TUI Python -Programm mit dem gesegneten Modul wird nur korrekt im URXVT -Terminalemulator angezeigt ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post
-
-
CollectionView in .net Maui irgendwann nur im zweiten Klick korrekt angezeigt
by Anonymous » » in C# - 0 Replies
- 4 Views
-
Last post by Anonymous
-