{}const=>[]async()letfn</>var
EntwicklungLua

🐍 Schreiben Sie eine "Schlange" in Lua von Grund auf neu

Möchten Sie Ihr erstes Spiel ohne Engines schreiben? Lass uns herausfinden, wie man die legendäre „Schlange“ auf Lua direkt in der Konsole macht – einfach und klar.

К

Kodik

Autor

3 Min. Lesezeit

Ein eigenes Spiel zu entwickeln, ist der Traum vieler, die mit dem Programmieren beginnen. Und wenn Sie die Sprache nehmen Lua, dann wäre das legendäre Spiel ein großartiges Startprojekt „Schlange“. Und wir werden ohne Engines und Bibliotheken auskommen - nur reines Lua und eine Konsole.

Lua ist einfach zu erlernen, hat eine prägnante Syntax und eignet sich hervorragend zum Erstellen von Spielen und Prototypen. Es wird oft in Game Engines (Roblox, Love2D, Defold) verwendet, aber auch ohne sie kann man mit Lua ein funktionierendes Spiel schreiben.

Was brauchen wir für unsere "Schlange"?

  • Das Spielfeld ist ein zweidimensionales Gitter, in dem sich die Schlange bewegt.

  • Schlange - eine Liste der Koordinaten ihrer Segmente.

  • Essen - ein zufälliger Punkt auf dem Feld.

  • Steuerung - Pfeile (oder WASD).

  • Mechanik - die Schlange bewegt sich, wächst beim Essen, verliert beim Zusammenstoß mit einer Wand oder sich selbst.

🔥 100.000+ Schüler sind bereits bei uns

Genug Theorie gelesen?
Zeit zu coden!

Kodik — eine App, in der du durch Praxis programmieren lernst. KI-Mentor, interaktive Lektionen, echte Projekte.

🤖 KI 24/7
🎓 Zertifikate
💰 Kostenlos
🚀 Jetzt starten
Heute beigetreten

Der erste Schritt ist das Spielfeld

width, height = 20, 20

Die Schlange und ihre Bewegung

snake = {
  {x = 10, y = 10},
  {x = 9, y = 10},
  {x = 8, y = 10}
}
direction = "right"

Essen

math.randomseed(os.time())
food = {x = math.random(1, width), y = math.random(1, height)}

Steuerung

io.input():setvbuf("no")

function getInput()
  local key = io.read(1)
  if key == "w" then direction = "up" end
  if key == "s" then direction = "down" end
  if key == "a" then direction = "left" end
  if key == "d" then direction = "right" end
end

Spielzyklus

while true do
  getInput()
  
  -- перемещаем змейку
  head = {x = snake[1].x, y = snake[1].y}
  if direction == "up" then head.y = head.y - 1 end
  if direction == "down" then head.y = head.y + 1 end
  if direction == "left" then head.x = head.x - 1 end
  if direction == "right" then head.x = head.x + 1 end

  table.insert(snake, 1, head)

  -- проверка на еду
  if head.x == food.x and head.y == food.y then
    food = {x = math.random(1, width), y = math.random(1, height)}
  else
    table.remove(snake)
  end

  -- проверка столкновений
  if head.x < 1 or head.y < 1 or head.x > width or head.y > height then
    print("Game Over!")
    break
  end

  -- вывод поля
  os.execute("clear") -- для Linux/macOS (или "cls" для Windows)
  for y = 1, height do
    for x = 1, width do
      local symbol = " . "
      if x == food.x and y == food.y then
        symbol = " @ "
      end
      for i, segment in ipairs(snake) do
        if segment.x == x and segment.y == y then
          symbol = " # "
        end
      end
      io.write(symbol)
    end
    io.write("\n")
  end

  os.execute("sleep 0.1")
end

Was verbessert werden kann

  • Füge einen Punktestand hinzu.

  • Stellen Sie verschiedene Geschwindigkeitsstufen ein.

  • Füge die Möglichkeit hinzu, das Programm zu beenden (z. B. durch Eingabe von q).

  • Zeichnen Sie eine Schlange schön (z. B. Kopf „O“, Körper „o“).

Das Schreiben von „Snake“ in Lua ohne Engines ist ein großartiges Projekt für Anfänger. Es hilft zu verstehen:

  • wie man mit Tabellen arbeitet,

  • wie man einen Spielzyklus umsetzt,

  • wie man Benutzereingaben verarbeitet.

Und erst dann kannst du diese Erfahrung auf Love2D, Roblox übertragen oder sogar deine eigene Mini-Engine schreiben!

In Kodike Wir machen das Programmierenlernen spannend und verständlich: Wir haben interessante Kurse mit Aufgaben, die helfen, die Fähigkeiten Schritt für Schritt zu verbessern.

Und wir haben auch einen aktiven Telegram-Kanal, wo wir coole Ideen diskutieren, Erfahrungen teilen und Aufgaben gemeinsam analysieren — Lernen wird nicht nur nützlich, sondern auch unterhaltsam.

🎯Hör auf zu zögern

Artikel gefallen?
Zeit zum Üben!

Bei Kodik liest du nicht nur — du schreibst sofort Code. Theorie + Praxis = echte Skills.

Sofortige Praxis
🧠KI erklärt Code
🏆Zertifikat

Keine Registrierung • Keine Karte