独自のゲームを作成することは、プログラミングの学習を開始する多くの人の夢です。そして、言語を取るなら Lua、伝説のゲームは素晴らしいスタートプロジェクトになります 「ヘビ」エンジンやライブラリは使わず、Luaとコンソールだけを使用します。
Luaは習得しやすく、シンタックスが簡潔で、ゲームやプロトタイプの作成に最適です。これはゲームエンジン(Roblox、Love2D、Defold)でよく使用されますが、それらがなくても、Luaで動作するゲームを書くことができます。

「ヘビ」に必要なものは何ですか?
ゲームフィールドは、スネークが動く2次元のグリッドです。
スネークは、そのセグメントの座標のリストです。
食べ物はフィールド上のランダムなポイントです。
コントロール — 矢印(または WASD )。
メカニズム — スネークは動き、食べ物を食べると成長し、壁や自分自身と衝突すると負けます。
最初のステップは、ゲームフィールドです
width, height = 20, 20ヘビとその動き
snake = {
{x = 10, y = 10},
{x = 9, y = 10},
{x = 8, y = 10}
}
direction = "right"食事
math.randomseed(os.time())
food = {x = math.random(1, width), y = math.random(1, height)}管理
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ゲームサイクル
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改善点
スコアカウンターを追加します。
さまざまな速度レベルを作成します。
終了の可能性を追加します(たとえば、qを入力した場合)。
ヘビを美しく描きます(たとえば、頭は「O」、体は「o」)。
エンジンなしでLuaで「Snake」を書くことは、初心者にとって素晴らしいプロジェクトです。それは理解するのを助けます:
表の操作方法、
ゲームサイクルの実装方法、
ユーザー入力の処理方法。
その後、この経験をLove2D、Robloxに転用したり、独自のミニエンジンを書いたりすることもできます!
B コディケ 私たちはプログラミングの学習を楽しくわかりやすくします。ステップバイステップでスキルを磨くのに役立つ課題を伴う興味深いコースを用意しています。
また、アクティブな テレグラムチャンネル、ここでは素晴らしいアイデアについて話し合い、経験を共有し、課題を一緒に分析します。学習は有益であるだけでなく、楽しいものになります。
