Morych написал:
А соперников будет только двое?
нет, будет много, просто на примере двух хотелось понять код
Неактивен
Morych написал:
Тогда лучше сразу составлять код из расчёта, что спортсменов много. Но прежде хотелось бы подробнее узнать логику игры: по пунктам что за чем должно происходить, включая то прибавление разницы ходов.
Если знаком с биатлоном то будет легче понять Если нет, то попытаюсь логику передать:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом. Вот как то так должно быть!
Отредактировано alfa10 (01.01.2015 22:33)
Неактивен
Morych написал:
alfa10 написал:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом.
Так, значит после спринта у нас есть массив ходов, которые спортсмены затратили на прохождение трассы:
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
Найдем число ходов лидера спринта (минимальное число ходов):
<<set $ходы_лидера = $ходы_спринт.sort()[0]>> --- сортируем массив и берем первый элемент отсортированного массива - минимальное значение
Перед началом преследования:
<<set $ходы_преследование = [0, 0, ... 0]>> --- число ходов, которые спортсмены затратят на прохождение гонки-преследования
и увеличим число ходов в зависимости от результата в спринте:
<<set $i = 0>>
<<loop $ходы_преследование.length>>
<<set $ходы_преследование[$i] = $ходы_спринт[$i] - $ходы_лидера>>
<<set $i++>>
<<endloop>>
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Это то, что было нужно?
Блин, вообще не пойму код
Неактивен
<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)
А как система поймет, кто за сколько ходов прошел спринт? Я так понимаю, в массиве уже конкретные результаты тут указаны?
теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.
Так у лидера наоборот, должен быть бонус перед другими, он же раньше второго номера уйдет на трассу на n-ходов.
Неактивен
Наверное набросаю спринт, потом сейв выложу, а Вы поправите что да как, ок?
Неактивен
Вот получил такой вот результат при таком вот коде. Места определились некорректно!
Неактивен
Morych написал:
Это как раз тот случай, о котором я говорил в этом сообщении. В массив для сортировки нужно заносить не "4", а "04"!
У меня сейчас на финише такой код:
<<set $place = []>> <<set $place.push($счетчик_хода_имя + "|" + $имя)>> <<set $place.push($счетчик_хода_имя1 + "|" + $имя1)>> <<set $place.push($счетчик_хода_имя2 + "|" + $имя2)>> <<set $place.push($счетчик_хода_имя3 + "|" + $имя3)>> <<set $place.push($счетчик_хода_имя4 + "|" + $имя4)>> <<set $place.push($счетчик_хода_имя5 + "|" + $имя5)>> <<set $place = $place.sort()>> Результаты гонки: <<set $i = 0>> <<loop $place.length>> <<set $position = $place[$i].split('|')>> <<print ($i + 1)>> - <<print $position[1]>> (<<print $position[0]>>) <<set $i++>> <<endloop>> [[Преследование|Преследование]]
Где надо в массиве добавить 0?
Неактивен
и такой цикл если-то на каждого из 72 спортсменов?
Неактивен
Morych, а посмотри плиз мой сейв. Как тут код можно упростить?
Неактивен
Еще вопрос по другому моему проекту. Нужно сделать жеребьевку команд в турнирной сетке. Сперва будет 32 команды. Отсюда вопросы:
1) как сделать жеребьевку команд в турнирной сетке (1/32 финала)? Команды не должны повторяться
2) как сделать рандомные результаты матчей между соперниками? Более сильные команды должны иметь бонус при расчете результатов перед более слабыми командами.
3) как вывести из дальнейшей жеребьевки (1/16 финала) проигравшие команды?
Неактивен
Спасибо, буду вкуривать!
Неактивен
а как работать с таблицами можно? Можно где-нибудь примеры посмотреть?
Неактивен
А если мне надо три строки и более? И с фотками внутри колонки, а? Программа ругается на третий столбец
Неактивен
а фото и ссылки можно вставить в таблицы?
Неактивен
<<set $place = []>> <<set $i = 0>> <<loop $имя.length>> <<if $очки[$i] lt 10>> <<set $place.push("00" + $очки[$i] + "|" + $i)>> <<elseif $очки[$i] lt 100>> <<set $place.push("0" + $очки[$i] + "|" + $i)>> <<else>> <<set $place.push($очки[$i] + "|" + $i)>> <<endif>> <<set $i++>> <<endloop>> <<set $place = $place.sort()>> ''Общий зачет Кубка мира:'' ---- <<set $i = 0>> <<loop $имя.length>> <<set $индекс = $place[$i].split('|')[1]>> <<print ($i + 1)>> место: <<print $имя[$индекс]>> (<<print $очки[$индекс]>>) <<set $i++>> <<endloop>>
Этот код делает сортировку спортсменов по местам, где первое место - у кого меньшее число очков. А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Неактивен
Есть кусок кода значений:
<<set $процент_лежка = ($попал_лежка*100)/$выстрел_лежка>> <<set $процент_стойка = ($попал_стойка*100)/$выстрел_стойка>> <<set $выстрел_лежка = 15>> <<set $выстрел_стойка = 0>> <<set $попал_лежка = 12>> <<set $попал_стойка = 0>>
Есть кусок кода вывода значения на экран:
Точность стрельбы лежа: <<print $процент_лежка>> %
Получаю в итоге:
Точность стрельбы лежа: NaN %
Почему, ребят?
Неактивен
531 пост - вопрос снимается, ошибку нашел.
Неактивен
Morych написал:
alfa10 написал:
А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Вместо
<<set $place = $place.sort()>>
Нужно написать
<<set $place = $place.sort().reverse()>>
Элементы массива будут отсортированы по убыванию.
Спасибо большое, дружище!!!
Неактивен
Вот, прилагаю сейв, если интересно?! Пока реализовал на базе белорусских спортсменок главное меню, и все окна главного меню, кроме "Начать гонку". Вот думаю, как сделать, чтобы после финиша гонки очки присуждались в зависимости от занятой позиции?! Например, 1 место - 10 очков, второе - 8, Третье - 6 и т.д. Там ведь будет массив. Поможете, ребята?
P.S. На втором слайде (где только крестик ошибки фотографии) нажмите на крестике. Просто там открытие 3 слайда при щелчке по фотке сделал.
Вообщем, архив тут: https://cloud.mail.ru/public/a6478949ef … %D1%80.rar
Отредактировано alfa10 (06.01.2015 23:04)
Неактивен
Сейв
Неактивен
DoubleDragon написал:
А что, неплохо. Надо допилить сами гонки и получится этакий симулятор.
Парни, поможите? Пока вот интересует момент, как сделать так, чтобы очки присуждались согласно занятым местам спортсменам?
Отредактировано alfa10 (07.01.2015 21:24)
Неактивен
Ребята, сейчас столкнулся с проблемой, что эстафета не получается
1 - непонятно, как прописать, на каком этапе будет выступать именно мой спортсмен? Ведь я то могу выбрать любого спортсмена...
2 - непонятно, как сделать так, чтобы на финише очки присуждались сборной, а не спортсмену. Надо понять, как система поймет, что финишировавший спортсмен принадлежит к конкретной сборной?
Посмотрите?
https://cloud.mail.ru/public/be22f9339b … 1%D1%82.sm
Отредактировано alfa10 (08.01.2015 23:57)
Неактивен
Такой еще вопрос: создал в начале игры массив <<set $имя = []>>. Также в начале игры называю своего спортсмена <<input '' $имя0>>. Как значение $имя0 вписать в массив?
Неактивен
Парни, сел окончательно с игрой. Совершенно не пойму с просчетом гонок. Нужно вводить по идее очень много параметров: ведь, кто-то может бежать дистанцию, а кто то в это время стрелять. Как это сделать, мне не понятно! Хочу спросить, может кто-то сможет мне помочь в реализации игры по моим консультациям? В знак благодарности, я готов буду оплатить Вашу помощь. Не крупно конечно, но пару тысяч выделить смогу.
Неактивен
Можно ли, имея разные переменные, например (результат1, результат2, результат3, результат4), объединить их в массив, и сделать сортировку этого массива так, чтобы результаты с наименьшим числовым значением выводились выше, чем результаты с большим числовым значением?
Например:
Результат1 - 50 ходов
Результат2 - 75 ходов
Результат3 - 28 ходов
Результат4 - 52 хода
Выводится так:
1 место - Результат3 - 28 ходов
2 место - Результат1 - 50 ходов
3 место - Результат4 - 52 хода
4 место - Результат2 - 75 ходов
Неактивен