Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #26
01.01.2015 14:44

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Morych написал:

А соперников будет только двое?

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

Неактивен

0    0    #27
01.01.2015 22:29

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Morych написал:

Тогда лучше сразу составлять код из расчёта, что спортсменов много. Но прежде хотелось бы подробнее узнать логику игры: по пунктам что за чем должно происходить, включая то прибавление разницы ходов.

Если знаком с биатлоном то будет легче понять smile Если нет, то попытаюсь логику передать:
Будет, скажем 12 сборных, в каждой по 6 спортсменов. Итого - 72 спортсмена. Сперва все бегут спринт (то есть, тут все ходят по очереди, кто затратил на прохождение трассы меньше всего времени - тот победитель. Далее все бегут преследование. Тут разница (отставание от победителя спринта) ходов должна записываться в переменную длины пройденной трассы. То есть, если Петя в спринте был лучше Васи, и прошел за 64 хода трассу, а Вася за 70, то в преследовании Петя должен при старте иметь показатель <<$длина_пройденной_трассы_Петя = $длина_пройденной_трассы_Петя + 6>>. То есть, он раньше на 6 ходов, чем Вася стартанул в гонке. При чем, вместо "6" должна наверное быть некая переменная, типа <<$отставание_от_первого_места_в_спринте>>, которая на финише спринта формировала бы сразу разницу отставаний между местами автоматом. Вот как то так должно быть!

Отредактировано alfa10 (01.01.2015 22:33)

Неактивен

0    0    #28
03.01.2015 22:13

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

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.
Это то, что было нужно? smile

Блин, вообще не пойму код sadsadsad

Неактивен

0    0    #29
03.01.2015 22:30

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

<<set $ходы_спринт = [64, 70, ... 60]>> (итого в массиве 72 элемента)

А как система поймет, кто за сколько ходов прошел спринт? Я так понимаю, в массиве уже конкретные результаты тут указаны?

теперь перед началом преследования у каждого спортсмена уже установлено стартовое число ходов, а у лидера спринта это число будет = 0.

Так у лидера наоборот, должен быть бонус перед другими, он же раньше второго номера уйдет на трассу на n-ходов.

Неактивен

0    0    #30
03.01.2015 22:32

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Наверное набросаю спринт, потом сейв выложу, а Вы поправите что да как, ок?

Неактивен

0    0    #31
03.01.2015 22:44

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Вот получил такой вот результат при таком вот коде. Места определились некорректно!


Прикрепленные файлы:
Screenshot_3.jpg, Размер: 75,677 байт, Скачано: 196

Неактивен

0    0    #32
03.01.2015 23:14

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

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?

Неактивен

0    0    #33
04.01.2015 11:00

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

и такой цикл если-то на каждого из 72 спортсменов?

Неактивен

0    0    #34
04.01.2015 13:34

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Morych, а посмотри плиз мой сейв. Как тут код можно упростить?


Прикрепленные файлы:
Биатлон_тест.sm, Размер: 4,367 байт, Скачано: 545

Неактивен

0    0    #35
04.01.2015 17:22

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Еще вопрос по другому моему проекту. Нужно сделать жеребьевку команд в турнирной сетке. Сперва будет 32 команды. Отсюда вопросы:
1) как сделать жеребьевку команд в турнирной сетке (1/32 финала)? Команды не должны повторяться
2) как сделать рандомные результаты матчей между соперниками? Более сильные команды должны иметь бонус при расчете результатов перед более слабыми командами.
3) как вывести из дальнейшей жеребьевки (1/16 финала) проигравшие команды?

Неактивен

0    0    #36
05.01.2015 12:07

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Спасибо, буду вкуривать! smile

Неактивен

0    0    #37
05.01.2015 12:41

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

а как работать с таблицами можно? Можно где-нибудь примеры посмотреть?

Неактивен

0    0    #38
05.01.2015 15:20

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

А если мне надо три строки и более? И с фотками внутри колонки, а? smile Программа ругается на третий столбец

Неактивен

0    0    #39
05.01.2015 16:52

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

а фото и ссылки можно вставить в таблицы?

Неактивен

0    0    #40
05.01.2015 22:52

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Код:

<<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>>

Этот код делает сортировку спортсменов по местам, где первое место - у кого меньшее число очков. А как сделать сортировку наоборот, чтобы первым был тот, у кого больше всего очков?

Неактивен

0    0    #41
05.01.2015 23:52

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Есть кусок кода значений:

Код:

<<set $процент_лежка = ($попал_лежка*100)/$выстрел_лежка>>

<<set $процент_стойка = ($попал_стойка*100)/$выстрел_стойка>>

<<set $выстрел_лежка = 15>>

<<set $выстрел_стойка = 0>>

<<set $попал_лежка = 12>>

<<set $попал_стойка = 0>>

Есть кусок кода вывода значения на экран:

Код:

Точность стрельбы лежа: <<print $процент_лежка>> %

Получаю в итоге:
Точность стрельбы лежа: NaN %

Почему, ребят?

Неактивен

0    0    #42
06.01.2015 12:18

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

531 пост - вопрос снимается, ошибку нашел.

Неактивен

0    0    #43
06.01.2015 22:47

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Morych написал:

alfa10 написал:

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

Вместо
<<set $place = $place.sort()>>

Нужно написать
<<set $place = $place.sort().reverse()>>

Элементы массива будут отсортированы по убыванию.

Спасибо большое, дружище!!!

Неактивен

0    0    #44
06.01.2015 22:56

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Вот, прилагаю сейв, если интересно?! Пока реализовал на базе белорусских спортсменок главное меню, и все окна главного меню, кроме "Начать гонку".  Вот думаю, как сделать, чтобы после финиша гонки очки присуждались в зависимости от занятой позиции?! Например, 1 место - 10 очков, второе - 8, Третье - 6 и т.д. Там ведь будет массив. Поможете, ребята?

P.S. На втором слайде (где только крестик ошибки фотографии) нажмите на крестике. Просто там открытие 3 слайда при щелчке по фотке сделал.

Вообщем, архив тут: https://cloud.mail.ru/public/a6478949ef … %D1%80.rar

Отредактировано alfa10 (06.01.2015 23:04)

Неактивен

0    0    #45
06.01.2015 23:00

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Сейв

Неактивен

0    0    #46
07.01.2015 20:00

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

DoubleDragon написал:

А что, неплохо. Надо допилить сами гонки и получится этакий симулятор.

Парни, поможите? smile Пока вот интересует момент, как сделать так, чтобы очки присуждались согласно занятым местам спортсменам?

Отредактировано alfa10 (07.01.2015 21:24)

Неактивен

0    0    #47
08.01.2015 23:56

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Ребята, сейчас столкнулся с проблемой, что эстафета не получается sad

1 - непонятно, как прописать, на каком этапе будет выступать именно мой спортсмен? Ведь я то могу выбрать любого спортсмена...
2 - непонятно, как сделать так, чтобы на финише очки присуждались сборной, а не спортсмену. Надо понять, как система поймет, что финишировавший спортсмен принадлежит к конкретной сборной?

Посмотрите?
https://cloud.mail.ru/public/be22f9339b … 1%D1%82.sm

Отредактировано alfa10 (08.01.2015 23:57)

Неактивен

0    0    #48
09.01.2015 22:47

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Такой еще вопрос: создал в начале игры массив <<set $имя = []>>. Также в начале игры называю своего спортсмена <<input '' $имя0>>. Как значение $имя0 вписать в массив?

Неактивен

0    0    #49
10.01.2015 18:06

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Парни, сел окончательно с игрой. Совершенно не пойму с просчетом гонок. Нужно вводить по идее очень много параметров: ведь, кто-то может бежать дистанцию, а кто то в это время стрелять. Как это сделать, мне не понятно! Хочу спросить, может кто-то сможет мне помочь в реализации игры по моим консультациям? В знак благодарности, я готов буду оплатить Вашу помощь. Не крупно конечно, но пару тысяч выделить смогу.

Неактивен

0    0    #50
10.01.2015 23:25

alfa10
Участник (+1, -1)
Зарегистрирован: 29.10.2013
Сообщений: 84

Re: Как сделать что-то или "я вот не понимаю"

Можно ли, имея разные переменные, например (результат1, результат2, результат3, результат4), объединить их в массив, и сделать сортировку этого массива так, чтобы результаты с наименьшим числовым значением выводились выше, чем результаты с большим числовым значением?

Например:

Результат1 - 50 ходов
Результат2 - 75 ходов
Результат3 - 28 ходов
Результат4 - 52 хода

Выводится так:

1 место - Результат3 - 28 ходов
2 место - Результат1 - 50 ходов
3 место - Результат4 - 52 хода
4 место - Результат2 - 75 ходов

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru