GDQuest / learn-gdscript

Learn Godot's GDScript programming language from zero, right in your browser, for free.
https://gdquest.github.io/learn-gdscript/
Other
2.04k stars 149 forks source link

Bug lesson 18-practice #930

Open Joojoan opened 6 months ago

Joojoan commented 6 months ago

Describe the bug A clear and concise description of what the bug is.

To Reproduce Steps to reproduce the bug:

  1. Go to 'lesson 18- creating arrays-practice 2-Selecting Units'
  2. write code: func run(): select_units([1,0]) select_units([5,1]) select_units([4,2]) select_units([0,3]) error: Unit in cell (1,0) not selected

Expected behavior Since it seems to identify the other cells as selected, it should see that as selected too

Screenshots

Information about your device (please complete the following information):

baetup commented 5 months ago

This is not a bug. You have 2 weird things in your code. This is the code that is responsible for selecting the units in the background of the live editor :

func select_units(cells: Array) -> void:
    selected_units.clear()
    for cell in cells:
        if cell in units:
            selected_units.append(cell)
    update()

You did not need to know this to actually complete the exercise but its better to show you. What your code does is to call the func 4 times with 4 different arrays instead of doing it only once. Your code would have worked if the code above would not have had selected_units.clear() but this is beyond the purpose of this explanation.

select_units([1,0])
select_units([5,1])
select_units([4,2])
select_units([0,3])

Instead of this try calling it in a proper manner something like : select_units([Vector2(x, y), Vector2(x, y), Vector2(x, y), Vector2(x, y)]).

Second thing you understood wrong is that you're trying to call select units with an array containing simple numbers as each index instead of a Vector2 which holds coordinates. Please revisit some of the chapters prior to Lesson 18 for a better understanding.