С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/48: Рейтинг темы: голосов - 48, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 16.07.2012
Сообщений: 40
1

Камень-ножницы-бумага

14.01.2013, 21:36. Показов 9742. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить программу игры "камень, ножницы, бумага",для двух играющих - пользователя и компьютера. Каждый из них должен выбрать один из трех упомянутых предметов. Победитель определяется по правилу: бумага прячет камень; Камень тупит ножницы; ножницы режут бумагу. Компьютер(выбирает) предмет с помощью датчика случайных чисел.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2013, 21:36
Ответы с готовыми решениями:

Игра "камень ножницы бумага" - организовать общий счет
#include<stdlib.h> #include<windows.h> #include<iostream> #include<conio.h> using namespace...

Камень ножницы бумага
Полина и Алина играют в "Камень-ножницы-бумага", кто проиграет, тот моет посуду. Если ничья, то...

Камень, ножницы, бумага
Задание со всем известной игрой. Игра делится на 3 фазы: выбор игрока, выбор компьютера и...

камень, ножницы и бумага
Построить 100 первых членов случайной последовательности из букв К, Н, Б, в которой они...

7
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
14.01.2013, 21:43 2
А в чем проблема? Программу можно просто построить на операторах иф, и сделать функцию которая уже будет выводить результаты в письменном виде.
0
1 / 1 / 0
Регистрация: 16.07.2012
Сообщений: 40
14.01.2013, 23:01  [ТС] 3
не знаю ,как датчик с датчиком случайных чисел работать
0
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
14.01.2013, 23:16 4
может генератор случайных чисел, а не датчик?

вот так с ним рабоать:
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <time.h>
 
int main(){
  srand(time(0)); // задаем новую цепочку псевдослучайных чисел
  int x = rand() % 100; // генерируем псевдослучайное число в диапазоне от 0 до 99
 
  printf("%d", x);
  return 0;
}
0
158 / 157 / 81
Регистрация: 31.12.2012
Сообщений: 254
15.01.2013, 13:13 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вся программа на одних if

C
1
2
3
4
5
6
7
8
9
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
#include <stdio.h>
int main(void)
{   
   
   int x,y;
   
   printf("\n");
   printf("\n||Kamen`-0 || Nochnicy-1 || Bumaga-2||\n\n");
   printf("\nUser:\n");
   scanf("%i",&x);
   
   srand(time(0));
   y=rand()%3;
   
   printf("\nSystem:\n%i",y);
   
   if(x == 0 && y == 0) {
      printf("\n\nNichiy!");
   }
   else if(x == 0 && y == 1) {
      printf("\n\nUser Win!");
   }
   else if(x == 0 && y == 2) {
      printf("\n\nSystem Win!");
   }
   else if(x == 1 && y == 1) {
      printf("\n\nNichiy!");
   }
   else if(x == 1 && y == 0) {
      printf("\n\nSystem Win!");
   }
   else if(x == 1 && y == 2) {
      printf("\n\nUser Win!");
   }
   else if(x == 2 && y == 2) {
      printf("\n\nNichiy!");
   }
   else if(x == 2 && y == 0) {
      printf("\n\nUser Win!");
   }
   else if(x == 2 && y == 1) {
      printf("\n\nSystem Win!");
   }
   
   // Go against the system!
   
   return 0;
   
}
x y
0 0 - Ничья
0 1 - Победа пользователя
0 2 - Победа системы
1 1 - Ничья
1 0 - Победа системы
1 2 - Победа пользователя
2 2 - Ничья
2 0 - Победа пользователя
2 1 - Победа системы
Миниатюры
Камень-ножницы-бумага  
1
101 / 92 / 53
Регистрация: 22.03.2011
Сообщений: 226
15.01.2013, 13:27 6
Цитата Сообщение от Belkin-VD Посмотреть сообщение
C
1
2
3
if(x == 0 && y == 0) {
* * * printf("\n\nNichiy!");
* *}
Цитата Сообщение от Belkin-VD Посмотреть сообщение
C
1
2
3
else if(x == 1 && y == 1) {
* * * printf("\n\nNichiy!");
* *}
Цитата Сообщение от Belkin-VD Посмотреть сообщение
C
1
2
3
else if(x == 2 && y == 2) {
* * * printf("\n\nNichiy!");
* *}
можно заменить если х==у Значит ничья.
0
2489 / 1147 / 707
Регистрация: 25.04.2016
Сообщений: 3,294
25.04.2016, 21:49 7
Куда более сложный вариант. Имитация механики Fate Extra на psp. Написан под linux с использованием ncurses. Оба участника делают по 6 ходов. В зависимости от выбранной сложности игроку показывается несколько случайных ходов компьютера (или ни одного). Победитель определяется по суммарному числу очков. Полностью исключена проблема ошибочного ввода значений. На скорую руку состряпан интерфейс.

Исходный код и примеры вывода во вложении.
Миниатюры
Камень-ножницы-бумага   Камень-ножницы-бумага   Камень-ножницы-бумага  

Вложения
Тип файла: 7z stone.c.7z (6.6 Кб, 8 просмотров)
0
2489 / 1147 / 707
Регистрация: 25.04.2016
Сообщений: 3,294
26.04.2016, 08:22 8
Цитата Сообщение от stake-k26 Посмотреть сообщение
Куда более сложный вариант. Имитация механики Fate Extra на psp...
Что можно улучшить?

На данный момент в имитации нет проверки на несколько побед, идущих подряд. Иными словами в игре нет дополнительного удара. Как его можно реализовать? Ну, воспользуемся незанятым счетчиком, например k, и во время сравнения ходов игрока и компьютера при каждой победе игрока маниакально увеличивать счетчик на 1, а в случае поражения или ничьей, сбрасывать счетчик в 0.

При этом, после каждого увеличения счетчика, проверять не достиг ли он значения 3, т.е. не совершил ли игрок 3 победы подряд. Если да, и k == 3, то вызывать дополнительный удар и сбрасывать счетчик в 0.

Например, зададим еще одну функцию int extrahit(void); Эта функция не имеет аргументов, но возвращает некое целое число. Теперь добавим в проверку условий победы игрока строки:

C
1
2
3
4
 k=k+1;   // в случае победы увеличиваем счетчик на 1
   if(k==3){   /* если у нас 3 победы подряд */
      k=extrahit();  // вызываем функцию удара и заносим результат ее работы в счетчик
   }  // конец if
Ах да, я принципиально не пользуюсь k++, поскольку мне так проще (при необходимости) переносить готовый код на другие языки.

Не трудно догадаться, что стоит в функции extrahit() написать return 0; и мы получим законченный алгоритм. Остается только добавить в проверку условий ничьей и поражения сброс счетчика k=0, ну и задать его перед проверкой.

Конечно для игры этого маловато. Ну, что еще можно добавить? Можно в функции дополнительного удара выполнять какую-то анимацию или выводить сообщения на экран, но это и так очевидно. Нужно что-то поинтереснее. Например, добавить проверку на критический удар - воспользоваться правилами настольной DnD и написать такую функцию extrahit():

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int extrahit(void){
/* функция будет генерировать случайное значение от 1 до 100 двумя бросками
   кубиков d10. Если выпадают две десятки, то это 100. Во всех остальных
   случаях выпадение 10 на кости означает ноль. Точка отсчета рнд у нас уже давно задана,
   так что еще раз задавать ее смысла нет */
   int cub[3];    // объявляем массив из трех элементов для рассчета значений бросков
   /* первый шаг */
      cub[0] = 1 + rand() %10;   // бросаем кубик d10
      /* если на первом шаге выпало 10 */
      if(cub[0] == 10){
         cub[0] = 0;
      }  // конец if
      /* если первый шаг не равен 10 */
      if(cub[0] != 10){
         cub[0] = cub[0] * 10;
      }  // конец if
   /* второй шаг */
      cub[1] = 1 + rand() %10;
      /* если выпали 2 десятки */
      if(cub[0] == 0 && cub[1] == 10){
         cub[1] = 100;
      }  // конец if
      /* если на первом шаге выпало какое-то число, не равное 10, а на втором - десятка */
      if(cub[0] != 0 && cub[1] == 10){
         cub[1] = 0;
      }  // конец if
      cub[2] = cub[0] + cub[1];  // простым суммированием получаем конечный результат
   /* С кубиками закончили. Теперь осталось проверить результат наших бросков. Например,
      если значение cub[2] от 1 до 25, то это промах. Если от 26 до 50 - слабый удар.
      Если от 51 до 75 - обычный удар, если от 76 до 100, то критический удар. */
      return 0;   // возвращаем сигнал завершения и тем самым сбрасываем счетчик побед
}  // конец функции int extrahit()
Конечно же, если наш удар ничего не делает, то толку от него нет. Но что мешает ввести в игру структуру данных игрока и противников? Ничего, вот только это потянет за собой карту, таймеры, AI, квесты, лор... есть риск превратить домашнее задание в разработку полноценной рпг с осточертевшей DnD внутри.
0
26.04.2016, 08:22
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2016, 08:22
Помогаю со студенческими работами здесь

камень*ножницы*бумага
составить программу игры&quot;камень,ножницы,бумага&quot;.Для 3 играющих- игрок 1, игрок2, игрок3. каждый из...

камень ножницы бумага
Всем доброго времени суток! Начал изучать javascript! и когда я набрал достаточно теоретических...

Камень, ножницы, бумага
Всем доброго времени суток, ради практики попытался написать простенькую консольную игру. Однако...

Камень, ножницы, бумага
Доброго времени суток. Сделать КНБ для фиксированного кол-ва элементов несложно, но подскажите,...

Камень, ножницы, бумага
Новичок ,дня 2 сижу на паскале .Баг в коде.Баг в том ,что после 1 игры если написать ,что то кроме...

Камень-ножницы-бумага
Здравствуйте, новичок в Питоне, решил сделать обычную камень-ножницы-бумага с некоторыми фичами....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru