true 20g + fixed spawn hold and next pieces
This commit is contained in:
parent
f33d5c9642
commit
8361efef2b
25
pytris.py
25
pytris.py
|
@ -1,3 +1,4 @@
|
||||||
|
from http.client import SWITCHING_PROTOCOLS
|
||||||
import time
|
import time
|
||||||
from typing import List
|
from typing import List
|
||||||
import pygame, random, datetime, threading
|
import pygame, random, datetime, threading
|
||||||
|
@ -222,15 +223,15 @@ class TetrisGameplay:
|
||||||
], # 5, I
|
], # 5, I
|
||||||
[
|
[
|
||||||
[
|
[
|
||||||
[Block((255, 240, 0)), Block((255, 240, 0)), None, None],
|
[None, Block((255, 240, 0)), Block((255, 240, 0)), None],
|
||||||
[Block((255, 240, 0)), Block((255, 240, 0)), None, None],
|
[None, Block((255, 240, 0)), Block((255, 240, 0)), None],
|
||||||
[None, None, None, None],
|
[None, None, None, None],
|
||||||
[None, None, None, None]
|
[None, None, None, None]
|
||||||
]
|
]
|
||||||
] # 6, O
|
] # 6, O
|
||||||
]
|
]
|
||||||
self.g = 0
|
self.g = 0
|
||||||
self.current_posx = 4
|
self.current_posx = 3
|
||||||
self.player = player
|
self.player = player
|
||||||
self.current_posy = self.buffer_y - 2
|
self.current_posy = self.buffer_y - 2
|
||||||
self.can_hard_drop = hard_drop
|
self.can_hard_drop = hard_drop
|
||||||
|
@ -316,10 +317,13 @@ class TetrisGameplay:
|
||||||
self.lock_delay_times_left = 15
|
self.lock_delay_times_left = 15
|
||||||
if self.mode == 1:
|
if self.mode == 1:
|
||||||
self.target = TIME_LIMITS_SEC[lvl]
|
self.target = TIME_LIMITS_SEC[lvl]
|
||||||
|
self.objective = TIME_LIMITS_SEC[lvl]
|
||||||
elif self.mode == 2:
|
elif self.mode == 2:
|
||||||
self.target = LINES_LIMITS[lvl]
|
self.target = LINES_LIMITS[lvl]
|
||||||
|
self.objective = LINES_LIMITS[lvl]
|
||||||
elif self.mode == 3:
|
elif self.mode == 3:
|
||||||
self.target = 1
|
self.target = 1
|
||||||
|
self.objective = 1
|
||||||
self.support_garbage = True
|
self.support_garbage = True
|
||||||
self.lines_for_level_up = self.gravity_and_lines_table()[1]
|
self.lines_for_level_up = self.gravity_and_lines_table()[1]
|
||||||
self.game_over = False
|
self.game_over = False
|
||||||
|
@ -327,7 +331,7 @@ class TetrisGameplay:
|
||||||
def spawn_tetromino(self):
|
def spawn_tetromino(self):
|
||||||
if self.collision(4, self.buffer_y-2, self.next_queue[0], 0):
|
if self.collision(4, self.buffer_y-2, self.next_queue[0], 0):
|
||||||
self.game_over = True
|
self.game_over = True
|
||||||
self.current_posx = 4
|
self.current_posx = 3
|
||||||
self.current_posy = self.buffer_y - 2
|
self.current_posy = self.buffer_y - 2
|
||||||
self.current_id = self.next_queue[0]
|
self.current_id = self.next_queue[0]
|
||||||
self.hold_locked = False
|
self.hold_locked = False
|
||||||
|
@ -336,6 +340,9 @@ class TetrisGameplay:
|
||||||
self.lock_delay_times_left = 15
|
self.lock_delay_times_left = 15
|
||||||
self.current_spin_id = 0
|
self.current_spin_id = 0
|
||||||
self.next_queue.pop(0)
|
self.next_queue.pop(0)
|
||||||
|
if self.gravity_and_lines_table()[0] >= 20:
|
||||||
|
while not self.collision(self.current_posx, self.current_posy+1, self.current_id, self.current_spin_id):
|
||||||
|
self.current_posy += 1
|
||||||
if len(self.next_queue) == self.next_length:
|
if len(self.next_queue) == self.next_length:
|
||||||
if self.seven_bag_random:
|
if self.seven_bag_random:
|
||||||
next_bag = [0, 1, 2, 3, 4, 5, 6]
|
next_bag = [0, 1, 2, 3, 4, 5, 6]
|
||||||
|
@ -349,6 +356,7 @@ class TetrisGameplay:
|
||||||
self.current_spin_id = 0
|
self.current_spin_id = 0
|
||||||
self.spin_is_kick_t_piece = False
|
self.spin_is_kick_t_piece = False
|
||||||
self.reset_lock_delay()
|
self.reset_lock_delay()
|
||||||
|
self.lock_delay_times_left = 15
|
||||||
if self.hold_id is not None:
|
if self.hold_id is not None:
|
||||||
self.current_id, self.hold_id = self.hold_id, self.current_id
|
self.current_id, self.hold_id = self.hold_id, self.current_id
|
||||||
self.current_posx = 4
|
self.current_posx = 4
|
||||||
|
@ -699,7 +707,6 @@ class TetrisGameplay:
|
||||||
self.lock_delay_frames = 30
|
self.lock_delay_frames = 30
|
||||||
self.lock_delay_times_left = 15
|
self.lock_delay_times_left = 15
|
||||||
|
|
||||||
|
|
||||||
def draw_game(self):
|
def draw_game(self):
|
||||||
win.fill((25, 25, 25))
|
win.fill((25, 25, 25))
|
||||||
pygame.draw.rect(win, (0, 0, 0),
|
pygame.draw.rect(win, (0, 0, 0),
|
||||||
|
@ -784,8 +791,16 @@ class TetrisGameplay:
|
||||||
win.blit(MEDIUM_FONT.render(f"{sum(self.score):5d}", 1, (255, 255, 255)), (440, 582))
|
win.blit(MEDIUM_FONT.render(f"{sum(self.score):5d}", 1, (255, 255, 255)), (440, 582))
|
||||||
win.blit(MEDIUM_FONT.render("LINES", 1, (255, 255, 255)), (440, 622))
|
win.blit(MEDIUM_FONT.render("LINES", 1, (255, 255, 255)), (440, 622))
|
||||||
win.blit(MEDIUM_FONT.render(f"{sum(self.cleared_lines):5d}", 1, (255, 255, 255)), (440, 642))
|
win.blit(MEDIUM_FONT.render(f"{sum(self.cleared_lines):5d}", 1, (255, 255, 255)), (440, 642))
|
||||||
|
match(self.mode):
|
||||||
|
case 0:
|
||||||
win.blit(MEDIUM_FONT.render("LV", 1, (255, 255, 255)), (80, 502))
|
win.blit(MEDIUM_FONT.render("LV", 1, (255, 255, 255)), (80, 502))
|
||||||
win.blit(MEDIUM_FONT.render(f"{self.level:02d}", 1, (255, 255, 255)), (80, 522))
|
win.blit(MEDIUM_FONT.render(f"{self.level:02d}", 1, (255, 255, 255)), (80, 522))
|
||||||
|
case 1:
|
||||||
|
win.blit(MEDIUM_FONT.render(f"{strfdelta(datetime.timedelta(seconds=self.objective), '%H:%M'):>6s}", 1, (255, 255, 255)), (0, 502))
|
||||||
|
win.blit(MEDIUM_FONT.render(f"TIME", 1, (255, 255, 255)), (40, 522))
|
||||||
|
case 2:
|
||||||
|
win.blit(MEDIUM_FONT.render(f"{self.objective:5d}", 1, (255, 255, 255)), (20, 502))
|
||||||
|
win.blit(MEDIUM_FONT.render(f"LINES", 1, (255, 255, 255)), (20, 522))
|
||||||
win.blit(MEDIUM_FONT.render("PPS", 1, (255, 255, 255)), (60, 562))
|
win.blit(MEDIUM_FONT.render("PPS", 1, (255, 255, 255)), (60, 562))
|
||||||
try:
|
try:
|
||||||
pps = sum(self.pieces) / self.game_time
|
pps = sum(self.pieces) / self.game_time
|
||||||
|
|
Loading…
Reference in New Issue