alfa10 написал:
А если мне надо три строки и более? И с фотками внутри колонки, а? Программа ругается на третий столбец
Строк может быть сколько угодно. Столбцов - не более двух.
Неактивен
Можно вставлять изображения:
<<row 'Лого' '[[File: http://sm.axmasoft.com/rsc/logo.png]]'>>
Ссылки нельзя.
Неактивен
<<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 %
Почему, ребят?
Неактивен
alfa10 написал:
А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?
Вместо
<<set $place = $place.sort()>>
Нужно написать
<<set $place = $place.sort().reverse()>>
Элементы массива будут отсортированы по убыванию.
Неактивен
Кстати, числовые массивы правильно сортировать так: <<set $place = $place.sort(*)>>
(звёздочка показывает, что сортировать значения надо как числа).
Сравните:<<set $arr = [5,10,1,111,100,2]>>
<<print $arr.sort()>>
<<print $arr.sort(*)>>
Этот код выводит:1,10,100,111,2,5
1,2,5,10,100,111
Но я сейчас посмотрел, это работает только в версиях 2.x, а в 3.0 не работает из-за допущенной ошибки, которую я поправлю в ближайшем обновлении.
Неактивен
Полезное замечание! Правда, применительно к биатлону такая сортировка не подходит, поскольку в массиве у нас не просто числа, а еще какая-то дополнительная информация, отделенная условным символом. Это может быть имя или индекс спортсмена. После сортировки нам нельзя потерять связь между числовым параметром и самим спортсменом. А поскольку сортируются строки, в числовом параметре мы добавляем нули вместо отсутствующих разрядов. Ничего лучше я не придумал. Может, есть более красивый способ?
Неактивен
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 ходов
Неактивен
alfa10 написал:
Такой еще вопрос: создал в начале игры массив <<set $имя = []>>. Также в начале игры называю своего спортсмена <<input '' $имя0>>. Как значение $имя0 вписать в массив?
<<set $имя.push($имя0)>>
Неактивен
alfa10 написал:
Можно ли, имея разные переменные, например (результат1, результат2, результат3, результат4), объединить их в массив, и сделать сортировку этого массива так, чтобы результаты с наименьшим числовым значением выводились выше, чем результаты с большим числовым значением?
Например:
Результат1 - 50 ходов
Результат2 - 75 ходов
Результат3 - 28 ходов
Результат4 - 52 хода
Выводится так:
1 место - Результат3 - 28 ходов
2 место - Результат1 - 50 ходов
3 место - Результат4 - 52 хода
4 место - Результат2 - 75 ходов
Это мы уже проходили
<<set $результат1 = 50>> <<set $результат2 = 75>> <<set $результат3 = 28>> <<set $результат4 = 52>> <<set $места = []>> <<set $места.push($результат1 + "|Результат1")>> <<set $места.push($результат2 + "|Результат2")>> <<set $места.push($результат3 + "|Результат3")>> <<set $места.push($результат4 + "|Результат4")>> <<set $места = $места.sort()>> <<set $номер = 0>> <<loop $места.length>> <<set $результат = $места[$номер].split("|")>> <<set $место = $номер + 1>> <<print $место>> место - <<print $результат[1]>> - <<print $результат[0]>> ходов <<set $номер++>> <<endloop>>
А чтобы в зависимости от числа выводить "ход", "хода" или "ходов", смотри эту заметку.
Неактивен
alfa10 написал:
Парни, сел окончательно с игрой. Совершенно не пойму с просчетом гонок. Нужно вводить по идее очень много параметров: ведь, кто-то может бежать дистанцию, а кто то в это время стрелять. Как это сделать, мне не понятно! Хочу спросить, может кто-то сможет мне помочь в реализации игры по моим консультациям? В знак благодарности, я готов буду оплатить Вашу помощь. Не крупно конечно, но пару тысяч выделить смогу.
Попробуй спросить в Потоке. Сюда, мне кажется, увлекающиеся Асмом реже заглядывают.
Неактивен
Для DoubleDragon (вопрос из потока).
Смотри, есть код:
<<loop $имя.length>> <<if $счетчик_хода0[$i] lt 10>> <<set $place.push("000" + $счетчик_хода0[$i] + "|" + $i)>> <<elseif $счетчик_хода0[$i] lt 100>> <<set $place.push("00" + $счетчик_хода0[$i] + "|" + $i)>> <<else>> <<set $place.push($счетчик_хода0[$i] + "|" + $i)>> <<endif>> <<set $i++>> <<endloop>>
Этот код соритрует и показывает мне лидера гонки:
750 - Вася
985 - Петя
1055 - Коля
А если у меня такие значения получаются в гонке:
9750 - Вася
9985 - Петя
10055 - Коля
Как мне надо будет код записать?
Неактивен
Кстати, alfa10, когда появится поддержка функции sort(*), можно попробовать добавлять в массив без дополнительных нулей, но через точку, а не через вертикальную линию. Т.е. так:
<<set $place.push($счетчик_хода0[$i] + "." + $i)>>
тогда в массиве у нас окажутся дробные числа (где целая часть - количество ходов, а дробная часть - это индекс спортсмена). Такой массив уже можно будет отсортировать методом sort(*) и сортироваться будут вообще любые значения ходов, без необходимости, повторюсь, добавлять дополнительные нули.
Потом, правда, и разделять строку надо будет по символу "."
Неактивен