Понедельник, 25 Ноября 2024, 20:09

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Не могу понять, где ошибка(Love 2d, Lua)
BeatrateДата: Суббота, 30 Марта 2013, 17:25 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Как бы для пробы делаю крестики-нолики. Проблема в том, что крестики не отрисовываются. При запуске ошибок не выдает
main.lua

player.lua

Вот на всякий случай ссылка на архив с содержимым

Добавлено (30.03.2013, 17:25)
---------------------------------------------
Вот этот код не работает
if b1 == 1 then
love.graphics.draw(cross,b1[1],b1[3])
elseif b1 == 2 then
love.graphics.draw(nought,b1[1],b1[3])
end
По идее он считывает значение блока(в данном случае первого блока). Если равен 0, то ничего, если 1, то отрисовывается крестик, а если 2, то нолик. Вроде все правильно, однако не работает


Kaan Drem Ov
ApatiДата: Суббота, 30 Марта 2013, 17:29 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Переменная b1 - просто переменная? Тогда почему ты обращаешься с ней как с массивом?
divol13Дата: Суббота, 30 Марта 2013, 17:30 | Сообщение # 3
участник
Сейчас нет на сайте
Цитата (Beatrate)
b1 = {0, 80, 0, 80}

Цитата (Beatrate)
if b1 == 1 then

как это должно работать по твоему?


allxumukДата: Суббота, 30 Марта 2013, 17:30 | Сообщение # 4
старожил
Сейчас нет на сайте
Цитата (Beatrate)
Вот этот код не работает
if b1 == 1 then
love.graphics.draw(cross,b1[1],b1[3])
elseif b1 == 2 then
love.graphics.draw(nought,b1[1],b1[3])
end

b1 ведь таблица, как она может оказаться равна единице? А если ты запишешь в b1 единицу, это будет уже переменная, а не таблица.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
BeatrateДата: Вторник, 02 Апреля 2013, 20:19 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Охх, точно, я совсем забыл, что уже превратил блоки в таблицы их координат.

Добавлено (30.03.2013, 17:36)
---------------------------------------------
Тему можно закрывать, истина была найдена

Добавлено (02.04.2013, 20:19)
---------------------------------------------
Так. Время для очередного идиотского вопроса. Почему не работает?


Вот эти крошки не выполняют свою работу sad Я в недоумении wacko
detect(coord1, b1)
detect(coord2, b2)
detect(coord3, b3)
detect(coord4, b4)
detect(coord5, b5)
detect(coord6, b6)
detect(coord7, b7)
detect(coord8, b8)
detect(coord9, b9)


Kaan Drem Ov
divol13Дата: Вторник, 02 Апреля 2013, 20:29 | Сообщение # 6
участник
Сейчас нет на сайте
Цитата (Beatrate)
function detect(coord, b) if x >= coord[1] and x <= coord[2] and y >= coord[3] and y <= coord[4] and love.mouse.isDown("l") == 1 and b ~= 2 and b ~= 1 then b = b + 1 end

и что должна по твоему делать эта функция?


BeatrateДата: Вторник, 02 Апреля 2013, 20:35 | Сообщение # 7
почетный гость
Сейчас нет на сайте
divol13, проверять. не нажал ли пользователь на клетку, и если нажал, то присвоить клетке значение 1. Значение нужно, чтобы отрисовать, если клетка равна 1, то рисуется крестик, если 2, то рисуется нолик, но пока до нолика и ИИ не дошло (

Kaan Drem Ov
FumleadДата: Вторник, 02 Апреля 2013, 21:14 | Сообщение # 8
участник
Сейчас нет на сайте
Тут без 100 грамм не разобраться.
В Лав и конечно почти ноль, но все же что делает "b ~= 2 and b ~= 1", и почему к b прибавляется единица?


Параноик с гениальным планом по захвату мира.
GarbagerДата: Вторник, 02 Апреля 2013, 21:22 | Сообщение # 9
частый гость
Сейчас нет на сайте
~= это !=
divol13Дата: Вторник, 02 Апреля 2013, 21:27 | Сообщение # 10
участник
Сейчас нет на сайте
Цитата (Beatrate)
divol13, проверять. не нажал ли пользователь на клетку, и если нажал, то присвоить клетке значение 1.

а теперь еще раз посмотри на код
Цитата (Beatrate)
function detect(coord, b) if x >= coord[1] and x <= coord[2] and y >= coord[3] and y <= coord[4] and love.mouse.isDown("l") == 1 and b ~= 2 and b ~= 1 then b = b + 1 end end

и ответь где же здесь
Цитата (Beatrate)
то присвоить клетке значение 1

короче, кури область видимости переменных




Сообщение отредактировал divol13 - Вторник, 02 Апреля 2013, 21:50
allxumukДата: Среда, 03 Апреля 2013, 06:59 | Сообщение # 11
старожил
Сейчас нет на сайте
Beatrate, чувак, ну что это?
Цитата (Beatrate)
love.mouse.isDown("l") == 1

Функция isDown возвращает только true/false, убери "== 1" и всё заработает, почти. Следующая проблема в том, что ты прибавляешь 1 к локальной переменной b, которая за пределами функции detect не существует. Сделай например так:
Код
b1 = detect(coord1, b1)  
...................
function detect(coord, b)  
if x >= coord[1] and x <= coord[2] and y >= coord[3] and y <= coord[4] and love.mouse.isDown("l") and b ~= 2 and b ~= 1 then  
b = b + 1  
end  
return b
end


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг