- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
import java.io.*;
class Player {
String name;
int ch;
}
class PlayerTestDrive{
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int count = 0;
int count1 = 0;
Player p1 = new Player();
Player p2 = new Player();
System.out.print("Введите имя первого игрока: ");
p1.name = reader.readLine();
System.out.print("Введите имя второго игрока: ");
p2.name = reader.readLine();
System.out.print(p1.name + ", введите число: ");
p1.ch = Integer.parseInt(reader.readLine());
System.out.print(p2.name + ", введите число: ");
p2.ch = Integer.parseInt(reader.readLine());
int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int aL = a.length;
int rand = (int)(Math.random() * aL);
if (rand == p1.ch){
count = 1;
}
if (rand == p2.ch){
count1 = 1;
}
if (count > count1){
System.out.println(p1.name + ", вы победили!");
}else if(count < count1){
System.out.println(p2.name + ", вы победили!");
}else{
System.out.println("Ничья, попробуйте еще раз!");
}
}
}
Игра! Два игрока вводят числа с клавиатуры от 1 до 10 , если введенное число какого-либо игрока совпадает с рандомным числом, то он становится победителем, если нет, то игра начинается еще раз! ПРОШУ СТРОГОЙ КРИТИКИ!
Fike 19.11.2017 13:53 # 0
просто умножить на десяточку было неинтересно?
babushkaAntona 19.11.2017 14:38 # 0
Stallman 19.11.2017 15:29 # +3
SemaReal 19.11.2017 15:31 # +3
Человек еще только-только массивы начал понимать, а ему InputStreamReader какой-то
1024-- 19.11.2017 18:35 # +2
Помню, тут как-то раз встретились spivti и Bobik при подобных обстоятельствах. Кстати, spivti курсе на втором-третьем уже, или выгнали?
Stallman 19.11.2017 19:00 # 0
1024-- 19.11.2017 19:09 # 0
http://govnokod.ru/13852#comment197662
d_fomenok 19.11.2017 18:40 # +1
1024-- 19.11.2017 18:57 # +2
В отличие от версии автора тут легко можно играть и в количестве более двух человек, поправив всего одно значение, а также игра и правда продолжается, пока не зависнет браузер будет выявлен победитель.
bormand 19.11.2017 20:00 # +2
1024-- 19.11.2017 20:07 # 0
Что, и устанавливать все современные библиотеки и инструменты как делал в 2к16 герой той древней статьи с хабра про устаревшие технологии 2к16?
syoma 11.01.2018 19:11 # 0
1024-- 11.01.2018 21:27 # 0
3.14159265 20.11.2017 20:39 # 0
sterl 19.11.2017 20:37 # 0
bormand 19.11.2017 20:41 # +4
По quit тоже можно выйти, да и по любому другому слову.
sterl 19.11.2017 20:46 # 0
А лучше вообще убираем этот кусок и делаем так (только сейчас дошло):
1024-- 19.11.2017 21:01 # 0
Неясно, почему в случае первого добавлена явная проверка.
sterl 19.11.2017 21:04 # 0
bormand 19.11.2017 21:08 # +2
sterl 19.11.2017 21:24 # 0
1024-- 19.11.2017 21:35 # +2
1024-- 19.11.2017 21:23 # 0
sterl 19.11.2017 21:26 # 0
А вот насчет выхода после того, как кто-то победил, мы несколько разные задачи решаем: у меня они играют, сколько хотят.
1024-- 19.11.2017 21:31 # 0
sterl 19.11.2017 21:38 # 0
1024-- 19.11.2017 22:06 # +1
Согласен. Но на досуге можно и поговнокодить для души.
Пожалуй, самый упоротый вариант, до которого я сейчас могу дойти:
Кто-нибудь может подсказать что-то более элегантное, чем "if len(w) == 1][0][0]"?
sterl 19.11.2017 22:34 # 0
Если цель уменьшить число строк, то еще одну можно убрать. Import позволяет применить себя сразу к нескольким модулям:
1024-- 19.11.2017 23:34 # 0
Я хотел работать с бесконечным списком (или с генератором, который позволит не хранить ни этот бесконечный список, ни первые N элементов из него) вместо бесконечного цикла, чтобы при случае вытянуть из него либо конечное, либо бесконечное число элементов по вкусу - в зависимости от потребности в играх. Как сделать range(Infinity), я не знал, но нагуглил itertools.count.
> Если цель уменьшить число строк
Цель здесь как в искусстве - заставить зрителя (да и автора то же) испытывать эмоции, сказать что-то новое и оригинальное. Одна длинная строка кода, сформированная элементарным образом, не заставляет испытывать эти эмоции. Желательно использовать моменты, которые приходят во вторую, третью и т.д. очередь.
Впрочем, import в одну короткую строку и правда лучше.
Вот тут я сделал две подстановки - names и random_numbers. random_numbers встали как есть, и это не привнесло ничего нового. А вот names встали только с добавлением нового генераторного слоя, что чуть менее тривиально, чем подстановка. Благодаря этому игра работает только на генераторах и списках, тут есть всего одна переменная, которой что-то явно присвоили, и её можно убрать. Вышло почти что лямбда-исчисление, но только с comprehensions:
Внимательный хакер может написать в ответ исправленную версию (на генераторах и без функций, лямбд, объявлений переменных), которая работает так же, но полностью ленивая (не делает ничего при удалении последней строки), и его будут уважать.
1024-- 19.11.2017 23:50 # 0
Теперь задача хакера - сократить это и сделать, чтобы в конце было games вместо next(games) при всех прочих условиях.
mcpixel 20.11.2017 20:31 # 0
Надо в класс запихать переменную win, а потом проверить
mcpixel 20.11.2017 20:31 # 0
Stallman 21.11.2017 01:24 # +1
SemaReal 21.11.2017 01:52 # 0
3.14159265 11.01.2018 16:37 # +1
COWuTEJIbTBOEuMAMKu 11.01.2018 18:05 # 0
1024-- 11.01.2018 18:07 # 0
Можно добавить немного лямбд, благо с кобенатором setInterval циклы и рекурсия не нужны.
Правда, частота выигрыша в этой версии, на мой взгляд, слишком велика. Надо было умножать не на бесконечность(семёрку), а на десятку.
Если игроки вводят числа x,y от 1 до 10, то всего у них 100 вореантов. С учётом случайных чисел r - 1000 вореантов. Равенство x,y убирает из них 100 кобенаций, оставляя лесные 900. Из них 90 - равенство x=r и ещё 90 - равенство y=r. Для x=r|y=r имеем 180 кобенаций (складывать можно, т.к. x=y среди них нет. Есть шанс 180/1000 = 9/50, что кто-то победит в игре по правилу x=r|y=r, x!=y.
Если рассматривать те же x,y,r на 1..10 и те же 900 вореантов x!=y, на r=1 будет 90 кобенаций и на r=2 будет 90 кобенаций, всего 180 кобенаций. Есть шанс 180/1000 = 9/50, что кто-то победит по правилам r<=2, x!=y.
Для r=1..7 выходит 700 кобенаций, 7*9*10=630 кобенаций x!=y, из них 630/7=90 кобенаций для r=1 и 180 кобенаций для r<=2, x!=y. Шанс победы по правилам r<=2, x!=y равен 180/700 = 9/35, что выше нормы.
3.14159265 11.01.2018 18:49 # +1
Чувствуется дмух и принцимп вореционной школы.
>Надо было умножать не на бесконечность(семёрку), а на десятку.
Да, сначала 10 было, но слишком скушно было тестировать, я решил сделать игру интереснее.
В принципе вот ультимативная (кобенная бесконечность):
http://govnokod.ru/23553#comment394684
Купи себе нормальный воренц-генератор, нищеброд.
inho 11.01.2018 19:45 # 0
(не удивлюсь, если это один человек)
COWuTEJIbTBOEuMAMKu 11.01.2018 20:05 # 0
3.14159265 11.01.2018 20:46 # +2
Глава X. Телеграмма от братьев Кобенаторов
Наступая на возле самого "Говнокода" его остановил поехавший с золотым зубом. Вореций, дай вореций!" После этой вореций, дай вореций!" После этой вореций!"
Потом стали обнаруживаться признаки более пугающего остановил поехавший с золотым зубом. Наступая на волочащиеся за ним обрывки от утреннего холодка, геймдевелопер разорвал бандероль и понес скрипто. И конда всё закончилось, выедавал бандероль и прочел: "Графиня изменившимся ворцом бежит пруду".
После этого нищий полуидиот, какие часто встречаются в интернетах и понес совершенную уже чепуху. Тем не мелкую псехозу. Это кгда ты уже чепуху. Это был обыкновенный зал, со смущенною душой. С этой вот встречи началась чертовщина. В три часа ночи его холодка, геймдевелопер разбудили. Пришла смска. Стуча зубами от утренным шагом двигался на волочащиеся за ним обрывки от слов: "Грузите вореции в бочка. Братья Кобенаторы"
- Какая вореция? - ошалело прошептал стоя на волочащиеся за ним обрывки от слов.
Но никто ему не ответил. Почтальон ушел. В дворовом садике страстно мычали генерации. Адрес правильный. Смещение тоже.
"Малая Питушиная 5734 графиня изменившимся ворцом бежит пруду".
В 23 15 46 часов 8 67 57 минут того же дня прибыла вторая депеша:
"Зожатие продолжается зпт миллион кобенаций".
inho 11.01.2018 20:59 # 0
3.14159265 11.01.2018 20:59 # 0
1024-- 11.01.2018 21:20 # 0
Слишком связно для автоматики, слишком упорото для здорового человека, больного ворециями. Похоже, Вы поехали (сошли с ума/осознали последний стандарт C++) и пишете это на полном серьёзе и вручную.
Уважаю.
3.14159265 11.01.2018 21:23 # 0
Чтоб "Enter" снова нажимает если большее 900 лесные выкинуть и сколько повториться любое сожатие для моему нужно. Ни "Enter" опередит гостя в месяц.
1024-- 11.01.2018 21:29 # +1
3.14159265 11.01.2018 21:40 # 0
Чтоб спаммер снова сжимает "Enter" большее четырех тоесть 56 лесные выкинуть и сколько повториться любое явление для моему нужно.
И потому что ушёл офлан за да, еще очень С++.
COWuTEJIbTBOEuMAMKu 12.01.2018 03:10 # 0
3.14159265 11.01.2018 21:28 # +1
Да, это правда, начал читать фичи последних ecmascript 6,7,8.
Слишком связно для крестоблядиков, слишком упорото для здорового человека, больного фукециями.
1024-- 11.01.2018 21:22 # 0