Проблема с локализацией игры
|
|
GatixPlay | Дата: Среда, 21 Августа 2019, 18:52 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| У меня возникла проблема с локализацией, я сделал меню на стрелках, ( Что-то типа Undertale ) ( https://ibb.co/9wvqP9F жёлтая цифра в правом верхнем углу это переменная Language), и при смене языка с английского на русский, язык просто не меняется... Вот код: Код if option = 1 { color1 = c_blue; color2 = c_white; color3 = c_white; color4 = c_white; } if option = 2 { color1 = c_white; color2 = c_blue; color3 = c_white; color4 = c_white; } if option = 3 { color1 = c_white; color2 = c_white; color3 = c_blue; color4 = c_white; } if option = 4 { color1 = c_white; color2 = c_white; color3 = c_white; color4 = c_blue; } if(keyboard_check_pressed(vk_up) or keyboard_check_pressed(ord("W"))) { option--; } if(keyboard_check_pressed(vk_down) or keyboard_check_pressed(ord("S"))) { option++; } if(option > 4) {option = 1;} if(option < 1) {option = 4;}
if keyboard_check_pressed(vk_enter) { switch(option) { case 1: { room_goto(1); } case 3: { switch(language) { case 1: language = 2; case 2: language = 1; } } } }
if language = 2 { SinglePlayer = "Одиночная игра"; MultiPlayer = "Сетевая игра"; Settings = "Язык"; Exit = "Выход"; } if language = 1 { SinglePlayer = "SinglePlayer"; MultiPlayer = "MultiPlayer"; Settings = "Language"; Exit = "Exit"; }
Переменные: Language = id языка Option = id выбранной кнопки. SinglePlayer, Multiplayer, Settings, Exit = Строки кнопок в меню. ( В Draw не получалось вставить if, пришлось так делать ) Вставил я всё это в Step. GMS 1
|
|
| |
martuk | Дата: Четверг, 22 Августа 2019, 09:53 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Сложно понять без комментариев твой код. Но могу сказать сразу, ты забыл поставить break в case 1: language = 2; и case 2: language = 1; Почему бы вместо switch здесь не использовать просто:
Код if(language == 1){ language = 2; }else{ anguage = 1; } Так же гораздо яснее
|
|
| |
b_ear | Дата: Четверг, 22 Августа 2019, 16:51 | Сообщение # 3 |
Покорители космоса
Сейчас нет на сайте
| martuk, есть языки программирования которые не требуют break в конце case. GatixPlay, Тем не менее в данном коде это вполне может быть ошибкой, если язык допустим AS3. На чем программируете? Также возможно конструкции вида должны быть заменены на , иначе вы просто присваиваете переменной новое значение "2" и проверяете его на неравенство нулю, что не соответствует логике алгоритма.
В целом это все "детские" ошибки.
Сообщение отредактировал b_ear - Четверг, 22 Августа 2019, 16:53 |
|
| |
martuk | Дата: Четверг, 22 Августа 2019, 17:10 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| b_ear,
Цитата b_ear ( ) есть языки программирования которые не требуют break в конце case. Мы же говорим про game maker, не?
Цитата b_ear ( ) , иначе вы просто присваиваете переменной новое значение "2" и проверяете его на неравенство нулю, что не соответствует логике алгоритма. Есть языки программирования, которые не требуют именно == в условиях. В коде автора это не ошибка.
Цитата b_ear ( ) В целом это все "детские" ошибки. В целом ваш ответ неверен и не относится к GML.
Сообщение отредактировал martuk - Четверг, 22 Августа 2019, 17:21 |
|
| |
drcrack | Дата: Четверг, 22 Августа 2019, 20:55 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Код switch(language) { case 1: language = 2; case 2: language = 1; }
здравый смысл подсказывает что если language изначально равен 1, он сначала изменится на 2, потом сработает второе условие, и станет обратно 1 добавь break если GMS их поддерживает также можешь просто заменить всю эту конструкцию на
Код language = 1 + (2 - language);
Сообщение отредактировал drcrack - Четверг, 22 Августа 2019, 20:56 |
|
| |
GatixPlay | Дата: Воскресенье, 25 Августа 2019, 10:06 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| drcrack, Я всё уже исправил, по идеи после этого должны были добавиться ещё пару языков, но проблема не в этом заключалась. Я просто по другому сформулировал алгоритм, и всё отлично работает. Добавлено (25 Августа 2019, 10:06) --------------------------------------------- martuk, Уже исправил всё. Добавлено (25 Августа 2019, 10:09) --------------------------------------------- b_ear, Это не "детские" ошибки т.к. я знаю обо всём этом ( Паралельно GMS, изучаю C# ), но GML язык простой и он не требует писать именно "==", конечно код так выглядит намного красивее, но я уже из-за Pascal привык "=" писать ( Мы в прошлом году начали Pascal проходить. 9 Класс ).
|
|
| |
JackNazaryan | Дата: Воскресенье, 25 Августа 2019, 10:25 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| Цитата GatixPlay ( ) b_ear, Это не "детские" ошибки т.к. я знаю обо всём этом ( Паралельно GMS, изучаю C# ), но GML язык простой и он не требует писать именно "==", конечно код так выглядит намного красивее, но я уже из-за Pascal привык "=" писать ( Мы в прошлом году начали Pascal проходить. 9 Класс ). Не хейт Pascal, но чисто совет из практики: паскалевские привычки желательно как можно быстрее искоренить, т.к. они больше нигде не работают. Извращения в духе := тем более. Куда универсальнее привычки, скажем, сишные.
|
|
| |