Szöveg renderelés

This commit is contained in:
markojozsef
2026-09-11 16:58:20 +02:00
parent 10fd39db7d
commit 11bd208c79
4 changed files with 98 additions and 23 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -5,4 +5,6 @@ sprites = {
"louisd": arcade.load_texture("res/sprite/louisd.png"),
"louisl": arcade.load_texture("res/sprite/louisl.png"),
"louisb": arcade.load_texture("res/sprite/louisb.png"),
"cursor": arcade.load_texture("res/sprite/handcursor.png"),
"font": arcade.load_spritesheet("res/sprite/font.png"),
}

View File

@@ -1,25 +1,15 @@
import arcade
import assets
import text
text = text.TextRenderer(0, 100, 200)
def switch():
print("Hello I'm switched")
text.reset("●A bölcs, gyors, fürge róka zöld ágon ül, miközben egy tyúk csípős paprikát főz, és egy whiskyvel teli dobozt cipelő dzsesszzenész kvázi jókedvűen fütyörészik.")
text.type_all()
def update(dt):
pass
def draw(game):
arcade.draw_rect_filled(
arcade.LBWH(0, 0, game.screen_width, game.screen_height),
arcade.color.BLUE,
)
arcade.draw_texture_rect(
assets.sprites["louisu"],
arcade.LBWH(
0,
0,
assets.sprites["louisu"].width,
assets.sprites["louisu"].height
),
pixelated=True
)
text.render()

View File

@@ -1,3 +1,5 @@
import arcade
import assets
class Character:
def __init__(self, visible, codepoint=None, width=None, y_offset=None, display=None):
@@ -9,6 +11,83 @@ class Character:
else:
self.display = display # Egy függvény amely akkor fut le amikor a speciális karaktert megjelenítik
class TextRenderer:
def __init__(self, x, y, width=None):
self.sprites = []
self.base_x = x
self.base_y = y
self.width = width
self.text = ""
self.textptr = 0
self.x = x
self.y = y
def reset(self, text):
self.text = text
self.textptr = 0
self.sprites = []
def amend(self, text):
self.text = self.text + text
def type_tick(self):
if self.textptr >= len(self.text):
return True
try:
char = texttable[self.text[self.textptr]]
except:
char = texttable['?']
if char.visible:
c = char.codepoint
texture = assets.sprites["font"].get_texture(arcade.LBWH((c % 16) * 16, (c // 16) * 12, char.width, 12))
if self.width and self.x >= self.base_x + self.width:
self.y -= 13
self.x = self.base_x
self.sprites.append([
texture,
arcade.LBWH(
self.x,
self.y + char.y_offset,
char.width,
12
)
])
self.x += char.width
else:
try:
char.display(self)
except e:
print(f"Hiba: kivétel egy display függvényben: {e}")
self.textptr += 1
if self.textptr >= len(self.text):
return True
else:
return False
def type_all(self):
while not self.type_tick():
pass
def render(self):
for s in self.sprites:
arcade.draw_texture_rect(
s[0],
s[1],
pixelated=True
)
# a \n display függvénye
def newline(self):
self.y -= 13
self.x = self.base_x
# A szövegtábla tartalmazza az össtes karakter tulajdonságait
texttable = {
# Szóköz
@@ -92,10 +171,10 @@ texttable = {
'd': Character(True, 100, 5, 0 ),
'e': Character(True, 101, 5, 0 ),
'f': Character(True, 102, 4, 0 ),
'g': Character(True, 103, 5, 0 ),
'g': Character(True, 103, 5, -3),
'h': Character(True, 104, 5, 0 ),
'i': Character(True, 105, 2, 0 ),
'j': Character(True, 106, 3, 0 ),
'j': Character(True, 106, 3, -3),
'k': Character(True, 107, 5, 0 ),
'l': Character(True, 108, 2, 0 ),
'm': Character(True, 109, 8, 0 ),
@@ -105,7 +184,7 @@ texttable = {
'q': Character(True, 113, 5, -3),
'r': Character(True, 114, 4, 0 ),
's': Character(True, 115, 5, 0 ),
't': Character(True, 116, 3, 0 ),
't': Character(True, 116, 4, 0 ),
'u': Character(True, 117, 4, 0 ),
'v': Character(True, 118, 6, 0 ),
'w': Character(True, 119, 8, 0 ),
@@ -134,8 +213,12 @@ texttable = {
'ű': Character(True, 18 , 5, 0 ),
# Görög betűk
'α': Character(True, 94 , 3, 0),
'β': Character(True, 95 , 3, 0),
'γ': Character(True, 96 , 3, 0),
'Ω': Character(True, 127, 3, 0),
'α': Character(True, 94 , 6, 0),
'β': Character(True, 95 , 5, 0),
'γ': Character(True, 96 , 7, 0),
'Ω': Character(True, 127, 6, 0),
# Speciális karakterek
'\n': Character(False, 0, 0, 0, display=newline)
}