Pico-8
October 24, 2022

Pico-8 : Перенос текста по словам

Проблема Pico-8 в том что у него нет никаких приспособлений для отображения длинного текста в заданном пространстве. Ведь мы привыкли к html, где вообще такой вопрос по умолчанию решен. Вот я пишу текст и он автоматически переносится.. Это так удобно.

Но пику разрабатывает один человек, у него нет времени вставлять все хотелки, поэтому уж как есть так и есть. Хорошо что проект еще жив, но плохо что он закрыт.

Любой напечатанный текст командой print уезжает за экран

Команда

print("jahslkdjahsl kjda hslkd alskj dhal  ksjhdlaks lakj")

напишет

Конечно обрезать текст очень просто..

Можно применить хак:

foreach(split(text,32), print)

результат:

но перенос по словам, это совсем другое дело.

тут придется писать код..

и вот оно:

А это уже результат:

Ну и конечная функция вставлять в свой проект:

function wrapword(text,cnt)
	local ts = split(text," ")	
	local out=""
	local o  =""
	local i
	for i=1,#ts do
		if #(o..ts[i])>cnt then
			out=out..o.."\n"
			o=ts[i].." "
		else
			o..=ts[i].." "
		end
	end
	return out..o
end

Вызов функции

? wrapword(text,cnt)

Параметры:

  • text - собственно сам текст
  • cnt - максимальное количество символов в строке

Надеюсь что кто-нибудь из вас напишет более короткий вариант. Пишите в комментах.

Пользуйтесь..