JocSahFinal/Node.gd

782 lines
32 KiB
GDScript3
Raw Normal View History

2024-07-16 16:57:57 +03:00
extends Node
@export var pion_alb_scene : PackedScene
@export var pion_negru_scene : PackedScene
@export var cadran_negru_scene : PackedScene
@export var cadran_alb_scene : PackedScene
@export var tura_neagra_scene: PackedScene
@export var cal_negru_scene: PackedScene
@export var nebun_negru_scene: PackedScene
@export var regina_neagra_scene: PackedScene
@export var rege_negru_scene: PackedScene
@export var tura_alba_scene: PackedScene
@export var cal_alb_scene: PackedScene
@export var nebun_alb_scene: PackedScene
@export var regina_alba_scene: PackedScene
@export var rege_alb_scene: PackedScene
var player : int
var piesa_panel_pos: Vector2i
var pasi : int
var piesa : int
var board_size : int
var cell_size : int
var grid_pos : Vector2i
var grid_data : Array # matrice 8 pe 8
var start_pos : Vector2i # retine primul click dat / piesa pe care se doreste a muta
var start_piesa : int
var temp_marker
var enemy : Vector2i # ajuta la retinerea valorilor pieselor inamice
var ally : Vector2i
var piesa_mutare : int
var transformare_pion = false
var rege_alb = false # nu stiu daca trebuie puse aici
var rege_negru = false
# Called when the node enters the scene tree for the first time.
func _ready():
board_size = 788
# imparte board_size la 8 pentru a obtine dimensiunea fiecarei celule
cell_size = board_size / 8
piesa_panel_pos=$PanelPiesa.get_position()
new_game()
piesa_mutare = 100 # valoare aberanta
enemy = Vector2i(-6,-1)
ally = Vector2i(1,6)
func _input(event):
cauta_regii()
if event is InputEventMouseButton :
if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed :
piesa_mutare = 99
create_marker(8, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
get_node("LabelNumePiesa").text=""
pasi = 1
print("ATENTIE CLICK DREAPTA DE LA MOUSE ANULEAZA PIESA SELECTATA")
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed :
#verifica daca mouse-ul e pe tabla de joc
if event.position.x < board_size:
#convertire pozitie mouse in locatie grid
grid_pos = Vector2i(event.position / cell_size) # grid_pos memoreza [coloana, linie]
rege_alb = false
rege_negru = false
if player == 1 :
transformare_pion = false
#miscari pentru pion
if grid_data[grid_pos.y][grid_pos.x][0] == 6 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(6, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare pion alb in fata
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] == 0 and piesa_mutare == 6:
deplasare_inainte_pion_alb()
# capturare piesa de catre pion alb pe diagonala
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] < 0 and piesa_mutare == 6:
capturare_diagonala_pion_alb()
#miscari pentru tura
if grid_data[grid_pos.y][grid_pos.x][0] == 5 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(5, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare tura
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] <= 0 and piesa_mutare == 5:
if pasi == 2:
luare_piesa_linie_coloana()
#miscare pentru cal
if grid_data[grid_pos.y][grid_pos.x][0] == 4 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(4, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare cal
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] <= 0 and piesa_mutare == 4:
if pasi == 2:
deplasare_cal()
#miscari pentru nebuni
if grid_data[grid_pos.y][grid_pos.x][0] == 3 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(3, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare nebun
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] <= 0 and piesa_mutare == 3:
if pasi == 2:
luare_piesa_diagonala()
#miscari pentru regina
if grid_data[grid_pos.y][grid_pos.x][0] == 1 and pasi == 1 and transformare_pion == false :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(1, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare regina
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] <= 0 and piesa_mutare == 1:
if pasi == 2:
deplasare_regina()
#miscari pentru rege
if grid_data[grid_pos.y][grid_pos.x][0] == 2 and pasi == 1:
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(2, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare rege
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] <= 0 and piesa_mutare == 2:
if pasi == 2:
deplasare_rege()
elif player == -1 :
transformare_pion = false
if grid_data[grid_pos.y][grid_pos.x][0] == -6 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
create_marker(-6, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
#deplasare pion negru in fata
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] == 0 and piesa_mutare == -6:
deplasare_inainte_pion_negru()
#capturare piesa de catre pion negru pe diagonala
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] > 0 and piesa_mutare == -6:
capturare_diagonala_pion_negru()
#miscari pentru tura
if grid_data[grid_pos.y][grid_pos.x][0] == -5 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(-5, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare tura
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] >= 0 and piesa_mutare == -5:
if pasi == 2:
luare_piesa_linie_coloana()
#miscarre pentru cal
if grid_data[grid_pos.y][grid_pos.x][0] == -4 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(-4, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare cal
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] >= 0 and piesa_mutare == -4:
if pasi == 2:
deplasare_cal()
#miscare pentru nebuni
if grid_data[grid_pos.y][grid_pos.x][0] == -3 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(-3, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare nebun
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] >= 0 and piesa_mutare == -3:
if pasi == 2:
luare_piesa_diagonala()
#miscare pentru regina
if grid_data[grid_pos.y][grid_pos.x][0] == -1 and pasi == 1 and transformare_pion == false:
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(-1, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare regina
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] >= 0 and piesa_mutare == -1:
if pasi == 2:
deplasare_regina()
#miscare pentru rege
if grid_data[grid_pos.y][grid_pos.x][0] == -2 and pasi == 1 :
selectare_piesa()
get_node("LabelNumePiesa").text=str(start_pos)
piesa_mutare = grid_data[grid_pos.y][grid_pos.x][0]
create_marker(-2, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
#deplasare tura
elif grid_pos != start_pos and grid_data[grid_pos.y][grid_pos.x][0] >= 0 and piesa_mutare == -2:
if pasi == 2:
deplasare_rege()
func new_game():
player = 1
enemy = Vector2i(-6, -1)
get_node("LabelJucator").text="Alb"
# [5,1] a doua valoare marcheaza culoarea chenarului tablei de joc, 7 = negru, 8 = alb
grid_data = [
[[5,7], [6,8], [0,7], [0,8], [0,7], [0,8], [-6,7], [-5,8]],
[[4,8], [6,7], [0,8], [0,7], [0,8], [0,7], [-6,8], [-4,7]],
[[3,7], [6,8], [0,7], [0,8], [0,7], [0,8], [-6,7], [-3,8]],
[[1,8], [6,7], [0,8], [0,7], [0,8], [0,7], [-6,8], [-1,7]],
[[2,7], [6,8], [0,7], [0,8], [0,7], [0,8], [-6,7], [-2,8]],
[[3,8], [6,7], [0,8], [0,7], [0,8], [0,7], [-6,8], [-3,7]],
[[4,7], [6,8], [0,7], [0,8], [0,7], [0,8], [-6,7], [-4,8]],
[[5,8], [6,7], [0,8], [0,7], [0,8], [0,7], [-6,8], [-5,7]]
]
pasi = 1
get_tree().call_group("pioni_albi","queue_free")
get_tree().call_group("ture_albe","queue_free")
get_tree().call_group("nebuni_albi","queue_free")
get_tree().call_group("cai_albi","queue_free")
get_tree().call_group("regina_alba","queue_free")
get_tree().call_group("rege_alb","queue_free")
get_tree().call_group("pioni_negri","queue_free")
get_tree().call_group("ture_negre","queue_free")
get_tree().call_group("nebuni_negri","queue_free")
get_tree().call_group("cai_negri","queue_free")
get_tree().call_group("regina_neagra","queue_free")
get_tree().call_group("rege_negru","queue_free")
$MeniuGameOver.hide()
get_tree().paused=false
# punerea pionilor albi pe tabla
create_marker(6, Vector2i(1,0) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,1) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,2) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,3) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,4) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,5) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,6) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(6, Vector2i(1,7) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
#punerea pionilor negri pe tabla
create_marker(-6, Vector2i(6,0) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,1) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,2) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,3) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,4) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,5) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,6) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
create_marker(-6, Vector2i(6,7) * cell_size + Vector2i(cell_size /2, cell_size /2 ))
#punerea turelor negre
create_marker(-5, Vector2i(7,0) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(-5, Vector2i(7,7) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea cailor negri
create_marker(-4, Vector2i(7,1) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(-4, Vector2i(7,6) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea nebunilor negri
create_marker(-3, Vector2i(7,2) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(-3, Vector2i(7,5) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea regelui si a reginei negre
create_marker(-1, Vector2i(7,3) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(-2, Vector2i(7,4) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea turelor albe
create_marker(5, Vector2i(0,0) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(5, Vector2i(0,7) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea cailor albi
create_marker(4, Vector2i(0,1) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(4, Vector2i(0,6) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea nebunilor albi
create_marker(3, Vector2i(0,2) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(3, Vector2i(0,5) * cell_size + Vector2i(cell_size /2, cell_size /2))
#punerea regelui si a reginei albe
create_marker(1, Vector2i(0,3) * cell_size + Vector2i(cell_size /2, cell_size /2))
create_marker(2, Vector2i(0,4) * cell_size + Vector2i(cell_size /2, cell_size /2))
func create_marker(piesa, position, temp=false) :
#creaza un marcker node si il adauga ca un child
if piesa==-1:
var regina_neagra = regina_neagra_scene.instantiate()
regina_neagra.position=position
add_child(regina_neagra)
if temp: temp_marker=regina_neagra
if piesa==-2:
var rege_negru = rege_negru_scene.instantiate()
rege_negru.position=position
add_child(rege_negru)
if temp: temp_marker=rege_negru
if piesa==-3:
var nebun_negru = nebun_negru_scene.instantiate()
nebun_negru.position=position
add_child(nebun_negru)
if temp: temp_marker=nebun_negru
if piesa ==-4:
var cal_negru = cal_negru_scene.instantiate()
cal_negru.position=position
add_child(cal_negru)
if temp: temp_marker=cal_negru
if piesa == -5:
var tura_neagra = tura_neagra_scene.instantiate()
tura_neagra.position = position
add_child(tura_neagra)
if temp: temp_marker=tura_neagra
if piesa == -6 :
var pion_negru = pion_negru_scene.instantiate()
pion_negru.position = position
add_child(pion_negru)
if temp: temp_marker=pion_negru
if piesa==1:
var regina_alba=regina_alba_scene.instantiate()
regina_alba.position=position
add_child(regina_alba)
if temp: temp_marker=regina_alba
if piesa==2:
var rege_alb=rege_alb_scene.instantiate()
rege_alb.position=position
add_child(rege_alb)
if temp: temp_marker=rege_alb
if piesa==3:
var nebun_alb=nebun_alb_scene.instantiate()
nebun_alb.position=position
add_child(nebun_alb)
if temp: temp_marker=nebun_alb
if piesa==4:
var cal_alb=cal_alb_scene.instantiate()
cal_alb.position=position
add_child(cal_alb)
if temp: temp_marker=cal_alb
if piesa == 5:
var tura_alba = tura_alba_scene.instantiate()
tura_alba.position=position
add_child(tura_alba)
if temp: temp_marker=tura_alba
if piesa == 6 :
var pion_alb = pion_alb_scene.instantiate()
pion_alb.position = position
add_child(pion_alb)
if temp: temp_marker=pion_alb
if piesa == 7 :
var cadran_negru = cadran_negru_scene.instantiate()
cadran_negru.position = position
add_child((cadran_negru))
if piesa == 8 :
var cadran_alb = cadran_alb_scene.instantiate()
cadran_alb.position = position
add_child((cadran_alb))
func deplasare_inainte_pion_alb():
if grid_pos.x == start_pos.x + 1 and grid_pos.y == start_pos.y :
if pasi == 2:
deplasare_piesa()
if grid_pos.x == 7:
create_marker(grid_data[grid_pos.y][grid_pos.x][1], grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
create_marker(1, grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
grid_data[grid_pos.y][grid_pos.x][0] = 1
transformare_pion = true
elif grid_pos.x == start_pos.x + 2 and grid_pos.y == start_pos.y and start_pos.x == 1 and grid_data[start_pos.y][start_pos.x + 1][0] == 0 :
if pasi == 2 :
deplasare_piesa()
func capturare_diagonala_pion_alb():
if grid_pos.x == start_pos.x + 1 and grid_pos.y == start_pos.y + 1 or grid_pos.x == start_pos.x + 1 and grid_pos.y == start_pos.y - 1 :
if pasi == 2:
deplasare_piesa()
if grid_pos.x == 7:
create_marker(grid_data[grid_pos.y][grid_pos.x][1], grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
create_marker(1, grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
grid_data[grid_pos.y][grid_pos.x][0] = 1
transformare_pion = true
func deplasare_inainte_pion_negru():
if grid_pos.x == start_pos.x - 1 and grid_pos.y == start_pos.y :
if pasi == 2:
deplasare_piesa()
if grid_pos.x == 0:
create_marker(grid_data[grid_pos.y][grid_pos.x][1], grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
create_marker(-1, grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
grid_data[grid_pos.y][grid_pos.x][0] = -1
transformare_pion = true
elif grid_pos.x == start_pos.x - 2 and grid_pos.y == start_pos.y and start_pos.x == 6 and grid_data[start_pos.y][start_pos.x - 1][0] == 0 :
if pasi == 2 :
deplasare_piesa()
func capturare_diagonala_pion_negru():
if grid_pos.x == start_pos.x - 1 and grid_pos.y == start_pos.y + 1 or grid_pos.x == start_pos.x - 1 and grid_pos.y == start_pos.y - 1 :
deplasare_piesa()
if grid_pos.x == 0:
create_marker(grid_data[grid_pos.y][grid_pos.x][1], grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
create_marker(-1, grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
grid_data[grid_pos.y][grid_pos.x][0] = -1
transformare_pion = true
func luare_piesa_linie():
# capturare piesa adversa pe linie
var sens = 0
if grid_pos.y == start_pos.y:
print("esti in fucntia luare_piesa_linie")
if grid_pos.x >= start_pos.x:
sens = 1
print("Sensul este ", sens)
print("aliati player-ului ",player, " sunt ", ally )
for i in range(start_pos.x + 1,grid_pos.x + 1, sens):
print(i)
print("esti in for loop")
# detecteaza inamici pe
if grid_data[grid_pos.y][i][0] >= enemy.x and grid_data[grid_pos.y][i][0] <= enemy.y :
grid_pos.x = i
print("Tura a intalnit un inamic in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", i, " si grid_pos.y = ", grid_pos.y)
break
if grid_data[grid_pos.y][i][0] >= ally.x and grid_data[grid_pos.y][i][0] <= ally.y :
grid_pos.x = i - 1
print("Tura a intalnic un aliat in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", i, " si grid_pos.y = ", grid_pos.y)
break
else:
sens = -1
print("Sensul este ", sens)
print("aliati player-ului ",player, " sunt ", ally )
for i in range(start_pos.x-1 ,grid_pos.x - 1, sens):
print(i)
print("Esti in for loop")
# detecteaza inamici pe
if grid_data[grid_pos.y][i][0] >= enemy.x and grid_data[grid_pos.y][i][0] <= enemy.y :
grid_pos.x = i
print("Tura a intalnit un inamic in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", i, " si grid_pos.y = ", grid_pos.y)
break
if grid_data[grid_pos.y][i][0] >= ally.x and grid_data[grid_pos.y][i][0] <= ally.y :
grid_pos.x = i + 1
print("Tura a intalnic un aliat in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", i, " si grid_pos.y = ", grid_pos.y)
break
if grid_pos != start_pos:
deplasare_piesa()
else:
pasi = 2 # se permite iar mutarea deoarece prima nu a produs nici-o miscare
print("parasire functie luare_piesa_linie")
func luare_piesa_coloana():
#capturare piesa pe coloanna
var sens = 0
if grid_pos.x == start_pos.x:
print("esti in functia luare_piesa_coloana")
if grid_pos.y >= start_pos.y:
sens = 1
print("Sensul este ", sens)
print("aliati player-ului ",player, " sunt ", ally )
for i in range(start_pos.y + 1,grid_pos.y + 1, sens):
print(i)
print("esti in for loop")
if grid_data[i][grid_pos.x][0] >= enemy.x and grid_data[i][grid_pos.x][0] <= enemy.y :
grid_pos.y = i
print("Tura a intalnit un inamic in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", i)
break
if grid_data[i][grid_pos.x][0] >= ally.x and grid_data[i][grid_pos.x][0] <= ally.y :
grid_pos.x = i - 1
print("Tura a intalnic un aliat in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y= ", i)
break
else:
sens = -1
print("Sensul este ", sens)
print("aliati player-ului ",player, " sunt ", ally )
for i in range(start_pos.y - 1,grid_pos.y -1,sens):
print(i)
print("Esti in for loop")
if grid_data[i][grid_pos.x][0] >= enemy.x and grid_data[i][grid_pos.x][0] <= enemy.y :
grid_pos.y = i
print("Tura a intalnit un inamic in drum")
print("tura ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", i)
break
if grid_data[i][grid_pos.x][0] >= ally.x and grid_data[i][grid_pos.x][0] <= ally.y :
grid_pos.y = i + 1
print("tura ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", i)
print("Tura a intalnic un aliat in drum")
break
if grid_pos != start_pos:
deplasare_piesa()
else:
pasi = 2 # se permite iar mutarea deoarece prima nu a produs nici-o miscare
print("parasirea functie luare_piesa_coloana")
func luare_piesa_linie_coloana():
luare_piesa_linie()
luare_piesa_coloana()
print("parasier functie luare_piesa_linie_coloana")
func selectare_piesa():
start_piesa = grid_data[grid_pos.y][grid_pos.x][0]
start_pos = grid_pos
print("player", player, "a apasat pe chenarul ", grid_pos )
print("a fost selectata piesa ", start_piesa)
pasi = 2
func set_ally_and_enemy():
if player == 1:
enemy = Vector2i(-6,-1)
ally = Vector2i(1,6)
else :
enemy = Vector2i(1,6)
ally = Vector2i(-6,-1)
#deplasare_piesa este folosita in functia deplasare_cal si deplasare_piesa_diagonala
func deplasare_piesa():
#marcare noua pozitie a piesei
grid_data[grid_pos.y][grid_pos.x][0] = start_piesa
create_marker(start_piesa, grid_pos * cell_size + Vector2i(cell_size /2, cell_size /2 + 5 ))
#demarcare vechea pozitie a piesei
create_marker(grid_data[start_pos.y][start_pos.x][1], start_pos * cell_size + Vector2i(cell_size /2, cell_size /2) )
grid_data[start_pos.y][start_pos.x][0] = 0
print(grid_pos)
print(grid_data)
pasi = 1
player *= -1
if player==1:
get_node("LabelJucator").text="Alb"
get_node("LabelNumePiesa").text=""
elif player==-1:
get_node("LabelJucator").text="Negru"
get_node("LabelNumePiesa").text=""
set_ally_and_enemy()
create_marker(8, piesa_panel_pos+ Vector2i(cell_size/2+24, cell_size/2+25),true)
func deplasare_cal():
var sens = 1 # deplasare la dreapta de poz initiala cal
print(" ")
print("intrare infunctia deplasare_cal")
#verificare mutare ca fiind pe tabla
if grid_pos.x >= 0 and grid_pos.x <=7 and grid_pos.y >= 0 and grid_pos.y <=7 :
print("Mutarea apare pe tabla: (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
#verificare mutari partea dreapta fata de poz initiala cal
#verificare mutare (linie , coloana) (-2, +1)
if grid_pos.x == start_pos.x + (1*sens) and grid_pos.y == start_pos.y -2 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare (-1, +2)
if grid_pos.x == start_pos.x + (2*sens) and grid_pos.y == start_pos.y -1 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare (+1, +2)
if grid_pos.x == start_pos.x + (2*sens) and grid_pos.y == start_pos.y +1 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare(+2,+1)
if grid_pos.x == start_pos.x + (1*sens) and grid_pos.y == start_pos.y +2 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
sens = -1
#verificare mutari partea stanga
#verificare mutare (linie , coloana) (-2, -1)
if grid_pos.x == start_pos.x + (1*sens) and grid_pos.y == start_pos.y -2 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare (-1, -2)
if grid_pos.x == start_pos.x + (2*sens) and grid_pos.y == start_pos.y -1 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare (+1, -2)
if grid_pos.x == start_pos.x + (2*sens) and grid_pos.y == start_pos.y +1 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
#verificare mutare(+2,-1)
if grid_pos.x == start_pos.x + (1*sens) and grid_pos.y == start_pos.y +2 :
print("calul este mutat la pozitia (linie,coloana) ", grid_pos.y, " ", grid_pos.x )
deplasare_piesa()
func luare_piesa_diagonala():
var dx = abs(grid_pos.x - start_pos.x)
var dy = abs(grid_pos.y - start_pos.y)
#verific daca pozitia data este pe diagonala cu pozitia initiala
if dx == dy and dx > 0 :
if grid_pos.y < start_pos.y and grid_pos.x > start_pos.x :
print("pozitie initiala la diagonala dreapta sus")
print("esti in for loop")
for i in range(1,8):
if(start_pos.x + i > 7):
print(" break deoarece start_pos.x + i > 7")
break
if(start_pos.x + i > grid_pos.x):
print("break deoarece start_pos.x + i > grid_pos.x")
break
if(start_pos.y - i < 0):
print(" break deoarece start_pos.y - i < 0")
break
if(start_pos.y - i < grid_pos.y):
print("break deoarece start_pos.y - i < grid_pos.y")
break
print(i)
# detecteaza inamici
if grid_data[start_pos.y - i][start_pos.x + i][0] >= enemy.x and grid_data[start_pos.y - i][start_pos.x + i][0] <= enemy.y :
grid_pos.x = start_pos.x + i
grid_pos.y = start_pos.y - i
print("Nebunul a intalnit un inamic in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
#detecteaza aliat
if grid_data[start_pos.y - i][start_pos.x + i][0] >= ally.x and grid_data[start_pos.y - i][start_pos.x + i][0] <= ally.y :
grid_pos.x = start_pos.x + i - 1
grid_pos.y = start_pos.y - i + 1
print("Nebunul a intalnic un aliat in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
elif grid_pos.y > start_pos.y and grid_pos.x < start_pos.x: # pozitie initiala la diagonala stanga jos
print("pozitie initiala la diagonala stanga jos")
print("esti in for loop")
for i in range(1,8):
if(start_pos.y + i > 7):
print(" break deoarece start_pos.y + i > 7")
break
if(start_pos.y + i > grid_pos.y):
print("break deoarece start_pos.y + i > grid_pos.x")
break
if(start_pos.x - i < 0):
print(" break deoarece start_pos.x - i < 0")
break
if(start_pos.x - i < grid_pos.x):
print("break deoarece start_pos.x - i < grid_pos.x")
break
print(i)
# detecteaza inamici
if grid_data[start_pos.y + i][start_pos.x - i][0] >= enemy.x and grid_data[start_pos.y + i][start_pos.x - i][0] <= enemy.y :
grid_pos.x = start_pos.x - i
grid_pos.y = start_pos.y + i
print("Nebunul a intalnit un inamic in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
#detecteaza aliat
if grid_data[start_pos.y + i][start_pos.x - i][0] >= ally.x and grid_data[start_pos.y + i][start_pos.x - i][0] <= ally.y :
grid_pos.x = start_pos.x - i + 1
grid_pos.y = start_pos.y + i - 1
print("Nebunul a intalnic un aliat in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
elif grid_pos.y > start_pos.y and grid_pos.x > start_pos.x :
print("pozitie initiala la diagonala dreapta jos")
print("esti in for loop")
for i in range(1,8):
if(start_pos.x + i > 7):
print(" break deoarece start_pos.x + i > 7")
break
if(start_pos.x + i > grid_pos.x):
print("break deoarece start_pos.x + i > grid_pos.x")
break
print(i)
# detecteaza inamici
if grid_data[start_pos.y + i][start_pos.x + i][0] >= enemy.x and grid_data[start_pos.y + i][start_pos.x + i][0] <= enemy.y :
grid_pos.x = start_pos.x + i
grid_pos.y = start_pos.y + i
print("Nebunul a intalnit un inamic in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
#detecteaza aliat
if grid_data[start_pos.y + i][start_pos.x + i][0] >= ally.x and grid_data[start_pos.y + i][start_pos.x + i][0] <= ally.y :
grid_pos.x = start_pos.x + i - 1
grid_pos.y = start_pos.y + i - 1
print("Nebunul a intalnic un aliat in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
elif grid_pos.y < start_pos.y and grid_pos.x < start_pos.x:
print("pozitie initiala la diagonala stanga sus")
print("esti in for loop")
for i in range(1,8):
if(start_pos.x - i < 0):
print(" break deoarece start_pos.x - i < 0")
break
if(start_pos.x - i < grid_pos.x):
print("break deoarece start_pos.x - i < grid_pos.x")
break
print(i)
# detecteaza inamici
if grid_data[start_pos.y - i][start_pos.x - i][0] >= enemy.x and grid_data[start_pos.y - i][start_pos.x - i][0] <= enemy.y :
grid_pos.x = start_pos.x - i
grid_pos.y = start_pos.y - i
print("Nebunul a intalnit un inamic in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
#detecteaza aliat
if grid_data[start_pos.y - i][start_pos.x - i][0] >= ally.x and grid_data[start_pos.y - i][start_pos.x - i][0] <= ally.y :
grid_pos.x = start_pos.x - i + 1
grid_pos.y = start_pos.y - i + 1
print("Nebunul a intalnic un aliat in drum")
print("Nebunul ramane pe pozitia cu grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
break
if grid_pos != start_pos:
deplasare_piesa()
else:
pasi = 2 # se permite iar mutarea deoarece prima nu a produs nici-o miscare
print("parasire functie luare_piesa_diagonala")
func deplasare_regina():
luare_piesa_linie_coloana()
luare_piesa_diagonala()
func deplasare_rege():
print(" ")
print("Ai intrat in functia deplasare_rege")
var sens
sens = 1
# verificare pozitie dreapta sus
if grid_pos.y == start_pos.y - 1 and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
# verificare pozitie dreapta
if grid_pos.y == start_pos.y and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
#verificare pozitie dreapta jos
if grid_pos.y == start_pos.y + 1 and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
#verificare pozitie jos
if grid_pos.y == start_pos.y + (1 * sens) and grid_pos.x == start_pos.x:
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
sens = - 1 # pastea stanga si sus de poitii
#verificare pozitie stanga sus
if grid_pos.y == start_pos.y - 1 and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
# verificare pozitie stanga
if grid_pos.y == start_pos.y and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
#verificare pozitie stanga jos
if grid_pos.y == start_pos.y + 1 and grid_pos.x == start_pos.x + (1 * sens):
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
#verificare pozitie sus
if grid_pos.y == start_pos.y + (1 * sens) and grid_pos.x == start_pos.x:
print("Regele mutat la pozitia grid_pos.x = ", grid_pos.x, " si grid_pos.y = ", grid_pos.y)
deplasare_piesa()
func cauta_regii():
for i in range (0,8):
for j in range(0,8):
if grid_data[i][j][0] == 2:
rege_alb = true
if grid_data[i][j][0] == - 2:
rege_negru = true
if rege_alb == false :
print( "REGELE ALB A FOST CAPTURAT< NU SE MAI POATE CONTINUA!")
$MeniuGameOver.show()
$MeniuGameOver/LabelCastigator.text="Player 2 a câștigat!"
get_tree().paused=true
if rege_negru == false :
print("REGELE NEGRU A FOST CAPTURAT< NU SE MAI POATE CONTINUA!")
$MeniuGameOver.show()
$MeniuGameOver/LabelCastigator.text="Player 1 a câștigat!"
get_tree().paused=true
func _on_meniu_game_over_restart():
new_game()