Botones con codigo y que se muestre el valor en un label en Godot4 - Intentando hacer calculadora

 Creo botones con código en Godot4

y que al apretarlos, se ponga el valor del botón en el label.


(No añade unidades ni decenas si se aprieta varias veces el botón)

(hacer un grafico de la lógica de una calculadora simple.)

(Si le das al + no suma, solo sale el signo mas)


¿El label puede mostrar float o solo string? Creo que solo string xd.

¿Existe algún método o funcion, o señal para identificar las unidades, decenas o centenas de un numero en godot4, sea un float (decimal) o un integer (entero)? Creo que no. Una forma de enfocarlo es que cada label sea un digito de la pantalla de la calculadora.



extends Control


var operation = ""

var first_number = 0

var second_number = 0

var result = 0


const MAX_DIGITS = 9


# Create buttons 

func _ready():


var label = Label.new()

label.position = Vector2(250, 50)

label.text = "0"

add_child(label)


var button7 = Button.new()

button7.position = Vector2(250, 180)

button7.text = "7"

button7.pressed.connect(self._button_pressed_7)

add_child(button7)

var button8 = Button.new()

button8.position = Vector2(280, 180)

button8.text = "8"

button8.pressed.connect(self._button_pressed_8)

add_child(button8)

var button9 = Button.new()

button9.position = Vector2(310, 180)

button9.text = "9"

button9.pressed.connect(self._button_pressed_9)

add_child(button9)

var button4 = Button.new()

button4.position = Vector2(250, 225)

button4.text = "4"

button4.pressed.connect(self._button_pressed_4)

add_child(button4)

var button5 = Button.new()

button5.position = Vector2(280, 225)

button5.text = "5"

button5.pressed.connect(self._button_pressed_5)

add_child(button5)

var button6 = Button.new()

button6.position = Vector2(310, 225)

button6.text = "6"

button6.pressed.connect(self._button_pressed_6)

add_child(button6)

var button1 = Button.new()

button1.position = Vector2(250, 270)

button1.text = "1"

button1.pressed.connect(self._button_pressed_1)

add_child(button1)

var button2 = Button.new()

button2.position = Vector2(280, 270)

button2.text = "2"

button2.pressed.connect(self._button_pressed_2)

add_child(button2)

var button3 = Button.new()

button3.position = Vector2(310, 270)

button3.text = "3"

button3.pressed.connect(self._button_pressed_3)

add_child(button3)

var button0 = Button.new()

button0.position = Vector2(250, 315)

button0.text = "0"

button0.pressed.connect(self._button_pressed_0)

add_child(button0)

var buttondot = Button.new()

buttondot.position = Vector2(280, 315)

buttondot.text = "."

#buttondot.pressed.connect(self._button_pressed_dot)

add_child(buttondot)

var buttonequal = Button.new()

buttonequal.position = Vector2(340, 315)

buttonequal.text = "="

buttonequal.pressed.connect(self._button_pressed_equal)

add_child(buttonequal)

var buttonplus = Button.new()

buttonplus.position = Vector2(340, 270)

buttonplus.text = "+"

buttonplus.pressed.connect(self._button_pressed_plus)

add_child(buttonplus)

var buttonc = Button.new()

buttonc.position = Vector2(280, 140)

buttonc.text = "C"

buttonc.pressed.connect(self._button_pressed_c)

add_child(buttonc)


# store a reference to the label for later use

$Label.text = "New label text"


func _button_pressed_7():

$Label.text = "7"


func _button_pressed_8():

$Label.text = "8"


func _button_pressed_9():

$Label.text = "9"


func _button_pressed_4():

$Label.text = "4"


func _button_pressed_5():

$Label.text = "5"


func _button_pressed_6():

$Label.text = "6"


func _button_pressed_1():

$Label.text = "1"


func _button_pressed_2():

$Label.text = "2"


func _button_pressed_3():

$Label.text = "3"


func _button_pressed_0():

$Label.text = "0"


#func _buttondot_pressed_dot():

#$Label.text = "."


func _button_pressed_equal():

$Label.text = "="


func _button_pressed_plus():

$Label.text = "+"


func _button_pressed_c():

$Label.text = "0"

# reset variables and clear the label

#operation = ""

#first_number = 0

second_number = 0

#result = 0

#$Label.text


---------------------------------------------------------------------------------------

Supuestamente tengo que hacer los botones como buttons y no con codigo para poder ponerles las señales, asi que todo este esta mal;

extends Control


var operacion = ""

var first_number = 0

var second_number = 0

var result = 0

var decenas = 0

var centenas = 0

var LabelDecenas = 0

var LabelCentenas = 0


const MAX_DIGITS = 4


func _on_numero_presionado(numero_presionado: int):

var numero_actual = int($LabelUnidades.text)

var posicion_decimal = pow(10, $LabelDecenas.text.to_int())

var nuevo_numero = numero_actual + numero_presionado * posicion_decimal

$LabelUnidades.text = str(nuevo_numero % 10)

$LabelDecenas.text = str((nuevo_numero / 10) % 10)

$LabelCentenas.text = str((nuevo_numero / 100) % 10)

var numero = nuevo_numero


func _on_ButtonLimpiar_pressed():

if (decenas == 0):

LabelDecenas.visible = false

else:

LabelDecenas.visible = true

if (centenas == 0):

LabelCentenas.visible = false

else:

LabelCentenas.visible = true

# Create buttons 

func _ready():


var label2 = Label.new()

label2.position = Vector2(260, 15)

label2.modulate = Color(0, 1, 0, 1)

label2.text = "CALCULADORA"

add_child(label2)


var button7 = Button.new()

button7.position = Vector2(250, 180)

button7.text = "7"

button7.pressed.connect(self._button_pressed_7)

add_child(button7)

var button8 = Button.new()

button8.position = Vector2(280, 180)

button8.text = "8"

button8.pressed.connect(self._button_pressed_8)

add_child(button8)

var button9 = Button.new()

button9.position = Vector2(310, 180)

button9.text = "9"

button9.pressed.connect(self._button_pressed_9)

add_child(button9)

var button4 = Button.new()

button4.position = Vector2(250, 225)

button4.text = "4"

button4.pressed.connect(self._button_pressed_4)

add_child(button4)

var button5 = Button.new()

button5.position = Vector2(280, 225)

button5.text = "5"

button5.pressed.connect(self._button_pressed_5)

add_child(button5)

var button6 = Button.new()

button6.position = Vector2(310, 225)

button6.text = "6"

button6.pressed.connect(self._button_pressed_6)

add_child(button6)

var button1 = Button.new()

button1.position = Vector2(250, 270)

button1.text = "1"

button1.pressed.connect(self._button_pressed_1)

add_child(button1)

var button2 = Button.new()

button2.position = Vector2(280, 270)

button2.text = "2"

button2.pressed.connect(self._button_pressed_2)

add_child(button2)

var button3 = Button.new()

button3.position = Vector2(310, 270)

button3.text = "3"

button3.pressed.connect(self._button_pressed_3)

add_child(button3)

var button0 = Button.new()

button0.position = Vector2(250, 315)

button0.text = "0"

button0.pressed.connect(self._button_pressed_0)

add_child(button0)

var buttondot = Button.new()

buttondot.position = Vector2(280, 315)

buttondot.text = "."

#buttondot.pressed.connect(self._button_pressed_dot)

add_child(buttondot)

var buttonequal = Button.new()

buttonequal.position = Vector2(340, 315)

buttonequal.text = "="

buttonequal.pressed.connect(self._button_pressed_equal)

add_child(buttonequal)

var buttonplus = Button.new()

buttonplus.position = Vector2(340, 270)

buttonplus.text = "+"

buttonplus.pressed.connect(self._button_pressed_plus)

add_child(buttonplus)

var buttonc = Button.new()

buttonc.position = Vector2(280, 140)

buttonc.text = "C"

buttonc.pressed.connect(self._button_pressed_c)

add_child(buttonc)


# store a reference to the label for later use

$LabelUnidades.text = "0"

$LabelDecenas.text = "2"


func _button_pressed_7():

$LabelUnidades.text = "7"


func _button_pressed_8():

$LabelUnidades.text = "8"


func _button_pressed_9():

$LabelUnidades.text = "9"


func _button_pressed_4():

$LabelUnidades.text = "4"


func _button_pressed_5():

$LabelUnidades.text = "5"


func _button_pressed_6():

$LabelUnidades.text = "6"


func _button_pressed_1():

$LabelUnidades.text = "1"


func _button_pressed_2():

$LabelUnidades.text = "2"


func _button_pressed_3():

$LabelUnidades.text = "3"


func _button_pressed_0():

$LabelUnidades.text = "0"


func _button_pressed_equal():

$LabelUnidades.text = "="


func _button_pressed_plus():

$LabelUnidades.text = "+"


func _button_pressed_c():

$LabelUnidades.text = "0"

$LabelDecenas.text = "0"

$LabelCentenas.text = "0"

m15calcu 29 marzo.

--------------------------------------------------------------------------------------------------------

Funciona el ocultar decenas y centenas, pero no al apretar 7.


extends Control


var operacion = ""

var first_number = 0

var second_number = 0

var result = 0

var unidades = 0

var decenas = 0

var centenas = 0


export var LabelUnidades: Label

@export var LabelDecenas: Label

@export var LabelCentenas: Label


func _on_numero_presionado(numero_presionado: int) -> void:

var unidades = int($LabelUnidades.text)

var nuevo_numero = centenas * 100 + decenas * 10 + unidades * 1 + numero_presionado * 0.1

$LabelUnidades.text = str(int(nuevo_numero) % 10)

$LabelDecenas.text = str(int(nuevo_numero / 10) % 10)

$LabelCentenas.text = str(int(nuevo_numero / 100) % 10)


func _on_ButtonLimpiar_pressed() -> void:

if decenas == 0:

$LabelDecenas.hide()

else:

$LabelDecenas.show()


if centenas == 0:

$LabelCentenas.hide()

else:

$LabelCentenas.show()


# Create buttons 

func _ready():

_on_ButtonLimpiar_pressed()

#_on_numero_presionado(7)

var label2 = Label.new()

label2.position = Vector2(260, 15)

label2.modulate = Color(0, 1, 0, 1)

label2.text = "CALCULADORA"

add_child(label2)

var button8 = Button.new()

button8.position = Vector2(280, 180)

button8.text = "8"

button8.pressed.connect(self._button_pressed_8)

add_child(button8)

var button9 = Button.new()

button9.position = Vector2(310, 180)

button9.text = "9"

button9.pressed.connect(self._button_pressed_9)

add_child(button9)

var button4 = Button.new()

button4.position = Vector2(250, 225)

button4.text = "4"

button4.pressed.connect(self._button_pressed_4)

add_child(button4)

var button5 = Button.new()

button5.position = Vector2(280, 225)

button5.text = "5"

button5.pressed.connect(self._button_pressed_5)

add_child(button5)

var button6 = Button.new()

button6.position = Vector2(310, 225)

button6.text = "6"

button6.pressed.connect(self._button_pressed_6)

add_child(button6)

var button1 = Button.new()

button1.position = Vector2(250, 270)

button1.text = "1"

button1.pressed.connect(self._button_pressed_1)

add_child(button1)

var button2 = Button.new()

button2.position = Vector2(280, 270)

button2.text = "2"

button2.pressed.connect(self._button_pressed_2)

add_child(button2)

var button3 = Button.new()

button3.position = Vector2(310, 270)

button3.text = "3"

button3.pressed.connect(self._button_pressed_3)

add_child(button3)

var button0 = Button.new()

button0.position = Vector2(250, 315)

button0.text = "0"

button0.pressed.connect(self._button_pressed_0)

add_child(button0)

var buttondot = Button.new()

buttondot.position = Vector2(280, 315)

buttondot.text = "."

#buttondot.pressed.connect(self._button_pressed_dot)

add_child(buttondot)

var buttonequal = Button.new()

buttonequal.position = Vector2(340, 315)

buttonequal.text = "="

buttonequal.pressed.connect(self._button_pressed_equal)

add_child(buttonequal)

var buttonplus = Button.new()

buttonplus.position = Vector2(340, 270)

buttonplus.text = "+"

buttonplus.pressed.connect(self._button_pressed_plus)

add_child(buttonplus)

var buttonc = Button.new()

buttonc.position = Vector2(280, 140)

buttonc.text = "C"

buttonc.pressed.connect(self._button_pressed_c)

add_child(buttonc)


# store a reference to the label for later use

$LabelUnidades.text = "0"

$LabelDecenas.text = "0"


func _on_button_7_pressed():

_on_numero_presionado(7)


func _button_pressed_8():

$LabelUnidades.text = "8"


func _button_pressed_9():

$LabelUnidades.text = "9"


func _button_pressed_4():

$LabelUnidades.text = "4"


func _button_pressed_5():

$LabelUnidades.text = "5"


func _button_pressed_6():

$LabelUnidades.text = "6"


func _button_pressed_1():

$LabelUnidades.text = "1"


func _button_pressed_2():

$LabelUnidades.text = "2"


func _button_pressed_3():

$LabelUnidades.text = "3"


func _button_pressed_0():

$LabelUnidades.text = "0"


func _button_pressed_equal():

$LabelUnidades.text = "="


func _button_pressed_plus():

$LabelUnidades.text = "+"


func _button_pressed_c():

$LabelUnidades.text = "0"

$LabelDecenas.text = "0"

$LabelCentenas.text = "0"

--------------------




Comentarios

Entradas populares de este blog

Godot4 Project Settings > Display Windows

Tipos de Nodos en Godot4

Organización de escena