Upload files to "/"
This commit is contained in:
parent
b6d732ebbc
commit
9f7495fa83
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Godot 4+ specific ignores
|
||||
.godot/
|
107
Chess_Board.gd
Normal file
107
Chess_Board.gd
Normal file
|
@ -0,0 +1,107 @@
|
|||
extends Node2D
|
||||
|
||||
const TILE_SIZE = 120
|
||||
const BOARD_SIZE = 8
|
||||
|
||||
var board_size : int
|
||||
var cell_size : int
|
||||
var grid_pos : Vector2i
|
||||
var grid_data : Array # matrice 8 pe 8
|
||||
|
||||
@onready var white_pawn_scene = preload("res://White_Pawn.tscn")
|
||||
var selected_piece = null
|
||||
|
||||
|
||||
|
||||
func _ready():
|
||||
draw_board()
|
||||
setup_pieces()
|
||||
setup_tile_areas()
|
||||
|
||||
|
||||
func _draw():
|
||||
var white = Color(1, 1, 1)
|
||||
var black = Color(0, 0, 0)
|
||||
|
||||
for row in range(BOARD_SIZE):
|
||||
for col in range(BOARD_SIZE):
|
||||
var color = white if (row + col) % 2 == 0 else black
|
||||
draw_rect(Rect2(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE), color)
|
||||
|
||||
func draw_board():
|
||||
queue_redraw() # Declanșează funcția _draw() pentru a desena tabla
|
||||
|
||||
func setup_pieces():
|
||||
# Instanțierea pionilor albi
|
||||
for i in range(BOARD_SIZE):
|
||||
var white_pawn = white_pawn_scene.instantiate()
|
||||
add_child(white_pawn)
|
||||
white_pawn.position = Vector2(i * TILE_SIZE + 60, 6 * TILE_SIZE + 60) # Pionii albi încep pe rândul 6
|
||||
|
||||
func setup_tile_areas():
|
||||
for row in range(BOARD_SIZE):
|
||||
for col in range(BOARD_SIZE):
|
||||
var tile_area = Area2D.new()
|
||||
var collision_shape = CollisionShape2D.new()
|
||||
var shape = RectangleShape2D.new()
|
||||
shape.extents = Vector2(TILE_SIZE / 2, TILE_SIZE / 2)
|
||||
collision_shape.shape = shape
|
||||
tile_area.add_child(collision_shape)
|
||||
tile_area.position = Vector2(col * TILE_SIZE + TILE_SIZE / 2, row * TILE_SIZE + TILE_SIZE / 2)
|
||||
tile_area.set_meta("grid_position", Vector2(col, row)) # Setăm coordonatele grilei
|
||||
add_child(tile_area)
|
||||
tile_area.connect("input_event", Callable(self, "_on_tile_input_event"))
|
||||
|
||||
func _on_piece_input_event(viewport, event, shape_idx, piece):
|
||||
if event is InputEventMouseButton and event.pressed:
|
||||
if event.button_index == MOUSE_BUTTON_LEFT:
|
||||
if selected_piece == null:
|
||||
selected_piece = piece
|
||||
print("Pion selectat la: ", selected_piece.position)
|
||||
else:
|
||||
print("Click pe pion, selectează o casuță pentru a muta pionul.")
|
||||
|
||||
func _on_tile_input_event(viewport, event, shape_idx):
|
||||
if event is InputEventMouseButton and event.pressed:
|
||||
if event.button_index == MOUSE_BUTTON_LEFT:
|
||||
var tile_area = pick_nearest_tile(event.position)
|
||||
if tile_area != null:
|
||||
var grid_position = tile_area.get_meta("grid_position") # Obține coordonatele grilei
|
||||
if selected_piece != null:
|
||||
if move_piece(selected_piece, grid_position):
|
||||
print("Pion mutat la: ", grid_to_position(grid_position))
|
||||
else:
|
||||
print("Mutare invalidă")
|
||||
selected_piece = null
|
||||
|
||||
func pick_nearest_tile(screen_position):
|
||||
var row = int(screen_position.y / TILE_SIZE)
|
||||
var col = int(screen_position.x / TILE_SIZE)
|
||||
var tile_area = null
|
||||
for child in get_children():
|
||||
if child is Area2D and child.get_meta("grid_position", null) == Vector2(col, row):
|
||||
tile_area = child
|
||||
break
|
||||
return tile_area
|
||||
|
||||
func move_piece(piece, grid_position):
|
||||
if piece.type == "pawn" and piece.color == "white":
|
||||
var current_grid_position = position_to_grid(piece.position)
|
||||
if is_valid_pawn_move(current_grid_position, grid_position):
|
||||
piece.position = grid_to_position(grid_position)
|
||||
return true
|
||||
return false
|
||||
|
||||
func is_valid_pawn_move(current_position, target_position):
|
||||
if target_position.x == current_position.x:
|
||||
if target_position.y == current_position.y - 1:
|
||||
return true # Mutare cu un pătrat înainte
|
||||
if current_position.y == 6 and target_position.y == current_position.y - 2:
|
||||
return true # Mutare cu două pătrate înainte din poziția inițială
|
||||
return false
|
||||
|
||||
func grid_to_position(grid_position):
|
||||
return grid_position * TILE_SIZE + Vector2(60,60)
|
||||
|
||||
func position_to_grid(screen_position):
|
||||
return Vector2(floor(screen_position.x / TILE_SIZE), floor(screen_position.y / TILE_SIZE))
|
6
Chess_Board.tscn
Normal file
6
Chess_Board.tscn
Normal file
|
@ -0,0 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://cmug8v3m7rkax"]
|
||||
|
||||
[ext_resource type="Script" path="res://Chess_Board.gd" id="1_ltbw5"]
|
||||
|
||||
[node name="ChessBoard" type="Node2D"]
|
||||
script = ExtResource("1_ltbw5")
|
20
project.godot
Normal file
20
project.godot
Normal file
|
@ -0,0 +1,20 @@
|
|||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Gpt"
|
||||
config/features=PackedStringArray("4.2", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=960
|
||||
window/size/viewport_height=960
|
9
tile_area.gd
Normal file
9
tile_area.gd
Normal file
|
@ -0,0 +1,9 @@
|
|||
extends Area2D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user