Перейти к содержимому

Вопрос

Решил я делать BootMenu. Что то типа программы. Думаю потом переименую в startup. Установил я jupiterOS и переименовал startup в jupiter. Получилось что при команде "jupiter" вызывалась ОС. Также сделал c voidOS. Начал писать код, вот что у меня получилось:

local void = void
local jupiter - jupiter
local shell = shell
write("voidOS - void  jupiterOS - jupiter  shell - shell")
local user = read()
if user = void then
 shell.run("voidOS") --Start voidOS
end
if user = jupiter then
 shell.run("jupiter") --Start jupiterOS
end
if user = shell then
 shell.run("clear") --Clear display
 shell.run("shell") --Start shell(write text CraftOS C:)
end

При запуске программы все шло хорошо, но ОС не запускалась. Никак! такое ощущение что if'ы вообще не запускались .хотя я писал правильно - shell или void или jupiter.

В чем проблема? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

Спасибо всем ребят)) Я ток учусь поэтому и минное поле ошибок :)  Закрываю тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

local void = void
local jupiter - jupiter
local shell = shellwrite("voidOS - void  jupiterOS - jupiter  shell - shell")
local user = read()
if user = void then 
shell.run("voidOS") --Start voidOS
end
if user = jupiter then shell.run("jupiter") --Start jupiterOS
end
if user = shell then 
shell.run("clear") --Clear display shell.run("shell") --Start 
shell(write text CraftOS C:)
end

Ошибка в том что ты сравниеваешь строку и переменную

if user = "void" then 
shell.run("voidOS") --Start voidOS
end
if user = "jupiter" then shell.run("jupiter") --Start jupiterOS 
end
if user = "shell" then
 shell.run("clear") --Clear display shell.run("shell") --Start 
shell(write text CraftOS C:)
end
Или иначе :

local void = "void"
local jupiter - "jupiter"
local shell = "shell"
Изменено пользователем kremnev8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А полностью "выправленный" код выглядит так:

local void = "void"
local jupiter = "jupiter"
local shell = "shell"
print("voidOS - void")
print("jupiterOS - jupiter")  
print("shell - shell")
local user = read()
if user == void then 
shell.run("voidOS") --Start voidOS
elseif user == jupiter then 
shell.run("jupiter") --Start jupiterOS
elseif user == shell then 
shell.run("clear") --Clear display 
shell.run("shell") --Start shell
end
Изменено пользователем kremnev8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А полностью "выправленный" код выглядит так:

local void = "void"
local jupiter = "jupiter"
local shell = "shell"
print("voidOS - void")
print("jupiterOS - jupiter")  
print("shell - shell")
local user = read()
if user = void then 
shell.run("voidOS") --Start voidOS
elseif user = jupiter then 
shell.run("jupiter") --Start jupiterOS
elseif user = shell then 
shell.run("clear") --Clear display shell.run("shell") --Start shell
end

Спасибо! Завтра запущу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

= присвавает новое значение

== проверяет на равенство.

Во всех ифах у вас присвоение новых значений...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ой , как я мог это не заметить. LashaInc , твой код это просто минное поле с ошибками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот здесь ..

local shell = "shell"

вы переопределяете переменную shell хоть и локально, а значит здесь..

  1. shell.run("voidOS") --Start voidOS

     

функцию run вызвать не удастся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Изодя из всех поправок:

local _void = "void"
local _jupiter = "jupiter"
local _shell = "shell"
print("voidOS - void")
print("jupiterOS - jupiter")  
print("shell - shell")
local user = read()
if user == _void then 
shell.run("voidOS") --Start voidOS
elseif user == _jupiter then 
shell.run("jupiter") --Start jupiterOS
elseif user == _shell then 
shell.run("clear") --Clear display 
shell.run("rom/programs/shell") --Start shell
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я бы костыли не придумывал и использовал вместо shell.run("clear") нормальную команду term.clear()

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я бы костыли не придумывал и использовал вместо shell.run("clear") нормальную команду term.clear()

И term.setCursorPos(1,1)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...