Pico-8
October 25, 2022

Pico-8 : Делаем свое меню

Вот типа такого меню мы сейчас забабахаем...

ой, конечно же надо Гифкой показать

Все пункты меню собраны в массиве:

Итак, в игровом цикле update нам надо нарисовать меню, мы будем его рисовать если

choose=true

Если при инициализации игры сразу хотим показать меню, то просто пишем как выше

Проверяем в самом начале update

	if (choose==true) then
		choosescreen()
		return
	end

т.е. если чуз = тру, то покажем меню и не будем продолжать игровой цикл.

Теперь осталось написать функцию choosescreen

Она делиться на 2 части

  • Показать меню с выделенным текущим пунктом
  • Обработать нажатия клавиш и поменять текущий пункт

Показать меню

Обработать клавиши

Да в моем случае я обрабатываю только клавишу ВНИЗ для перемещения курсора вниз, и клавишу Z для выбора пункта

После выбора пункта соответствующие глобальные переменные заполняются, меняется статус окна и все! Теперь меню больше не покажется..

Полный код фнукции немного больше, вот он

function choosescreen()
	camera(0,0)
	cls(3)
	if (selected==nil) selected="bike"
	?"      choose stuff to find\n"
	?"      --------------------\n"
	if btnp(⬇️) then
		for i=1,#stuffs do
			if (stuffs[i]==selected) then
				selected=stuffs[i+1]
				break
			end
		end
	end
	if btnp(🅾️) then
		itemid=i
		itemname=selected
		choose=false
	end
	— show list
	foreach(stuffs, function(t)
		if (selected==t) then
			?"         >"..t
		else
			?"          "..t
		end
	end
	)
	print("choice...",50,120)
end

Вот и все !

Ну и как вы знаете приемущества такого меню перед MENUITEM в том что тут можно влепить хоть 10 пунктов меню и нарисовать как вам хочется.