Skip to content

Commit

Permalink
Merge branch 'main' of github.com:detiuaveiro/tpg-tetris-ia_equipa_24
Browse files Browse the repository at this point in the history
  • Loading branch information
brunosilva16 committed Nov 23, 2021
2 parents 5bfc6c0 + 492e3a6 commit 95c8801
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions student.py
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,105 @@ def get_keys(translate, numberOfrotations):
keys.append("s")
return keys

def rotate(piece, type_piece, numOfrotations):
#type_piece = get_piece(piece)
#print(type_piece)
piece = deepcopy(piece)
center = [0,0]
if type_piece == 'O':
return piece
elif type_piece == 'T':
#center = get_center(piece, type_piece)
center = piece[1]
for i in range(numOfrotations):
for block in piece:
if block != center:
if block[0] == center[0] and block[1] < center[1]:
block[0] += 1
block[1] += 1
elif block[0] > center[0] and block[1] == center[1]:
block[0] -= 1
block[1] += 1
elif block[0] == center[0] and block[1] > center[1]:
block[0] -= 1
block[1] -= 1
elif block[0] < center[0] and block[1] == center[1]:
block[0] += 1
block[1] -= 1
return piece
elif type_piece == 'S':
#center = get_center(piece, type_piece)
center = piece[1]
if numOfrotations % 2 != 0:
for block in piece:
if block != center: # atençao à ordem das peças
if block[0] == center[0] and block[1] == center[1] - 1:
block[0] -= 1
block[1] += 2
if block[0] == center[0] + 1 and block[1] == center[1] + 1:
block[0] -= 1
return piece
elif type_piece == 'Z':
#center = get_center(piece, type_piece)
center = piece[2]
if numOfrotations % 2 != 0:
for block in piece:
if block != center: # atençao à ordem das peças
if block[0] == center[0] and block[1] == center[1] - 1:
block[0] += 1
block[1] += 2
if block[0] == center[0] - 1 and block[1] == center[1] + 1:
block[0] += 1
return piece
elif type_piece == 'L' or type_piece == 'J':
#center = get_center(piece, type_piece)
if type_piece == 'L':
center = piece[1]
elif type_piece == 'J':
center = piece[2]

for i in range(numOfrotations):
for block in piece:
if block != center:
if block[0] == center[0] and block[1] < center[1]:
block[0] += 1
block[1] += 1
elif block[0] > center[0] and block[1] == center[1]:
block[0] -= 1
block[1] += 1
elif block[0] == center[0] and block[1] > center[1]:
block[0] -= 1
block[1] -= 1
elif block[0] < center[0] and block[1] == center[1]:
block[0] += 1
block[1] -= 1
else:
if block[0] > center[0] and block[1] < center[1]: # trata se do bloco "cauda", o unico que nao está diretamente conectado ao centro
block[1] += 2
elif block[0] > center[0] and block[1] > center[1]:
block[0] -= 2
elif block[0] < center[0] and block[1] > center[1]:
block[1] -= 2
elif block[0] < center[0] and block[1] < center[1]:
block[0] += 2
return piece
elif type_piece == 'I':
#center = get_center(piece, type_piece)
center = piece[2]
if numOfrotations % 2 != 0:
for block in piece:
if block != center:
if block[0] == center[0] - 2:
block[0] += 2
block[1] -= 2
elif block[0] == center[0] - 1:
block[0] += 1
block[1] -= 1
else:
block[0] -= 1
block[1] += 1
return piece

# DO NOT CHANGE THE LINES BELLOW
# You can change the default values using the command line, example:
# $ NAME='arrumador' python3 client.py
Expand Down

0 comments on commit 95c8801

Please sign in to comment.