Compare commits

...

3 Commits

Author SHA1 Message Date
adrienmalin
b1cef21f00 fix fullscreen 2019-10-01 03:14:29 +02:00
adrienmalin
2c4808312f typo 2019-10-01 03:10:09 +02:00
adrienmalin
9db4f4d122 text resize 2019-10-01 03:09:54 +02:00

View File

@ -59,7 +59,6 @@ TEXT_COLOR = arcade.color.BUBBLES
FONT_NAME = "joystix monospace.ttf"
STATS_TEXT_MARGIN = 40
STATS_TEXT_SIZE = 16
STATS_TEXT_HEIGHT = 20.8
HIGHLIGHT_TEXT_COLOR = arcade.color.BUBBLES
HIGHLIGHT_TEXT_SIZE = 20
@ -83,18 +82,6 @@ QUIT ALT+F4
"""
START_TEXT = "TETRARCADE" + CONTROL_TEXT + "PRESS [ENTER] TO START"
PAUSE_TEXT = "PAUSE" + CONTROL_TEXT + "PRESS [ESC] TO RESUME"
STATS_TEXT = """SCORE
HIGH SCORE
LEVEL
GOAL
LINES
TIME
"""
GAME_OVER_TEXT = """GAME
OVER
@ -122,7 +109,7 @@ class MinoesSprites(arcade.SpriteList):
def resize(self, scale):
for sprite in self:
sprite.scale = scale
self.update()
self.refresh()
class TetrominoSprites(MinoesSprites):
@ -134,11 +121,10 @@ class TetrominoSprites(MinoesSprites):
mino.sprite = MinoSprite(mino, window, alpha)
self.append(mino.sprite)
def update(self):
def refresh(self):
for mino in self.tetromino:
coord = mino.coord + self.tetromino.coord
mino.sprite.set_position(coord.x, coord.y)
super().update()
def set_alpha(self, alpha):
for sprite in self:
@ -150,15 +136,14 @@ class MatrixSprites(MinoesSprites):
def __init__(self, matrix):
super().__init__()
self.matrix = matrix
self.update()
self.refresh()
def update(self):
def refresh(self):
for y, line in enumerate(self.matrix):
for x, mino in enumerate(line):
if mino:
mino.sprite.set_position(x, y)
self.append(mino.sprite)
super().update()
class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
@ -171,7 +156,7 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
self.KEY_MAP = {
tetrislogic.State.STARTING: {
arcade.key.ENTER: self.new_game,
arcade.key.F11: self.toogle_fullscreen
arcade.key.F11: self.toggle_fullscreen
},
tetrislogic.State.PLAYING: {
arcade.key.LEFT: self.move_left,
@ -195,16 +180,16 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
arcade.key.NUM_0: self.swap,
arcade.key.ESCAPE: self.pause,
arcade.key.F1: self.pause,
arcade.key.F11: self.toogle_fullscreen
arcade.key.F11: self.toggle_fullscreen
},
tetrislogic.State.PAUSED: {
arcade.key.ESCAPE: self.resume,
arcade.key.F1: self.resume,
arcade.key.F11: self.toogle_fullscreen
arcade.key.F11: self.toggle_fullscreen
},
tetrislogic.State.OVER: {
arcade.key.ENTER: self.new_game,
arcade.key.F11: self.toogle_fullscreen
arcade.key.F11: self.toggle_fullscreen
}
}
@ -223,14 +208,6 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
self.matrix_bg = arcade.Sprite(MATRIX_SPRITE_PATH)
self.matrix_bg.alpha = MATRIX_BG_ALPHA
self.matrix.sprites = MatrixSprites(self.matrix)
self.stats_text = arcade.create_text(
text = STATS_TEXT,
color = TEXT_COLOR,
font_size = STATS_TEXT_SIZE,
font_name = FONT_NAME,
anchor_x = 'right'
)
self.scale = 1
def on_hide(self):
self.pause()
@ -257,8 +234,8 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
if tetromino:
tetromino.sprites.resize(self.scale)
def toogle_fullscreen(self):
self.fullscreen = not self.fullscreen
def toggle_fullscreen(self):
self.set_fullscreen(not self.fullscreen)
def new_game(self):
self.highlight_texts = []
@ -274,7 +251,7 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
super().new_current()
self.ghost.sprites = TetrominoSprites(self.ghost, self, GHOST_ALPHA)
for tetromino in [self.current, self.ghost] + self.next:
tetromino.sprites.update()
tetromino.sprites.refresh()
def move(self, movement, prelock=True):
moved = super().move(movement, prelock)
@ -286,14 +263,14 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
change_y = movement.y * size
self.current.sprites.move(change_x, change_y)
if movement in (tetrislogic.Movement.LEFT, tetrislogic.Movement.RIGHT):
self.ghost.sprites.update()
self.ghost.sprites.refresh()
return moved
def rotate(self, rotation):
rotated = super().rotate(rotation)
if rotated:
for tetromino in (self.current, self.ghost):
tetromino.sprites.update()
tetromino.sprites.refresh()
return rotated
def swap(self):
@ -301,10 +278,10 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
self.ghost.sprites = TetrominoSprites(self.ghost, self, GHOST_ALPHA)
for tetromino in [self.held, self.current, self.ghost]:
if tetromino:
tetromino.sprites.update()
tetromino.sprites.refresh()
def lock(self):
self.current.sprites.update()
self.current.sprites.refresh()
super().lock()
def on_key_press(self, key, modifiers):
@ -347,15 +324,30 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
if tetromino:
tetromino.sprites.draw()
arcade.render_text(
self.stats_text,
self.matrix_bg.left - STATS_TEXT_MARGIN,
self.matrix_bg.bottom
)
t = time.localtime(self.time)
font_size = STATS_TEXT_SIZE * self.scale
for y, text in enumerate(
(
"TIME",
"LINES",
"GOAL",
"LEVEL",
"HIGH SCORE",
"SCORE"
)
):
arcade.draw_text(
text = text,
start_x = self.matrix_bg.left - STATS_TEXT_MARGIN*self.scale - self.matrix_bg.width,
start_y = self.matrix_bg.bottom + 1.5*(2*y+1)*font_size,
color = TEXT_COLOR,
font_size = font_size,
align = 'right',
font_name = FONT_NAME,
anchor_x = 'left'
)
for y, text in enumerate(
(
"{:02d}:{:02d}:{:02d}".format(
t.tm_hour-1, t.tm_min, t.tm_sec
),
@ -368,10 +360,10 @@ class TetrArcade(tetrislogic.TetrisLogic, arcade.Window):
):
arcade.draw_text(
text = text,
start_x = self.matrix_bg.left - STATS_TEXT_MARGIN,
start_y = self.matrix_bg.bottom + 2*y*STATS_TEXT_HEIGHT,
start_x = self.matrix_bg.left - STATS_TEXT_MARGIN*self.scale,
start_y = self.matrix_bg.bottom + 3*y*font_size,
color = TEXT_COLOR,
font_size = STATS_TEXT_SIZE,
font_size = font_size,
align = 'right',
font_name = FONT_NAME,
anchor_x = 'right'