Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 07.07.2019, 17:48   #1
Shade01
Новичок
 
Регистрация: 07.07.2019
Сообщений: 2
Репутация: 10
Вопрос В игре при "ничье" дать дополнительный ход

Доброго времени суток!
Нужна помощь.
Домашним заданием было написать игру *Кости* по пройденным темам. Игру написала, все работает кроме одного.
В задании было указано, что в случаи ничьи дать дополнительный ход, а я никак не догоняю куда и что написать
Буду благодарна если поможете или направите на полезные статьи
Код игры прилагаю


Код:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int randomGen(){
	return rand()%(12 + 1 -2) + 2;
}
void countResults(int arr[2][5]){
	int player_a = 0;
	int player_b = 0;
	
	for(int i = 0; i < 5; i++){
		if(arr[0][i] > arr[1][i]){
			player_a++;
		}else{
			player_b++;
		}
	}
	cout << "Player:"<<player_a<< " PC:"<<player_b<<"\n";
	if(player_a > player_b){
		cout << "Player wins";
	}else{
		cout << "PC wins";
	}
	cout << "\n";
}
void countResults1(int arr[2][5]){
	int player_a = 0;
	int player_b = 0;
	
	for(int i = 0; i < 5; i++){
		if(arr[0][i] > arr[1][i]){
			player_a++;
		}else{
			player_b++;
		}
	}
	
	cout << "Player1: "<<player_a<< " PLayer2: "<<player_b<<"\n";
	if(player_a > player_b){
		cout << "Player1 wins";
	}else{
		cout << "Player2 wins";
	}
	cout << "\n";
}

bool soloGame(){
	system("cls");
	
	int soloMenuPunkt;
	int result[2][5];
	for(int i = 0; i < 5; i++){
		cout << "Игра с компьютером\n"
		<< "1. Играть\n"
		<< "2. Сброс\n"
		<< "3. Выход\n"
		<< ">";
		cin >> soloMenuPunkt;
		switch(soloMenuPunkt){
			case 1:
				result[0][i] = randomGen();
				result[1][i] = randomGen();
				cout << "Игрок : "<<result[0][i] << " Комп:"<<result[1][i];
				cout << "\n\n";
				break;
			case 2:
				return false;
				break;
			case 3:
				return true;
				break;
			default:
				break;
		}
	}
	countResults(result);
	system("pause");
	return false;
}

bool multiPlayer(){
	system("cls");
	
	int multiMenuPunkt;
	int result[2][5];
	for(int i = 0; i < 5; i++){
		cout << "Игра с человеком\n"
		<< "1. Играть\n"
		<< "2. Сброс\n"
		<< "3. Выход\n"
		<< ">";
		cin >> multiMenuPunkt;
		switch(multiMenuPunkt){
			case 1:
				result[0][i] = randomGen();
				result[1][i] = randomGen();
				cout << "Игрок1 : "<<result[0][i] << " Игрок2:"<<result[1][i];
				cout << "\n\n";
				break;
			case 2:
				return false;
				break;
			case 3:
				return true;
				break;
			default:
				break;
		}
	}
	countResults1(result);
	system("pause");
	return false;
}

int main(int argc, char** argv) {
	setlocale(LC_ALL, "Rus");
	srand(time(NULL));
	while(true){
		system("cls");
		cout << "Главное меню\n"
		<< "1. Играть с компьютером\n"
		<< "2. Играть с человеком\n"
		<< "3. Выход\n"
		<< ">";
		int menuPunkt;
		cin >> menuPunkt;
		switch(menuPunkt){
			case 1:
				if(soloGame()){
					return 0;
				}
			break;
			case 2:
				if(multiPlayer()){
					return 0;
				}
			break;
			case 3:
				return 0;
			break;
			default:
				
			break;
		}
	}
	return 0;
}

Последний раз редактировалось Аватар; 07.07.2019 в 18:16.
Shade01 вне форума   Ответить с цитированием
Старый 08.07.2019, 03:29   #2
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Адрес: RF Moscow
Сообщений: 5,409
Репутация: 2502

icq: 438888048
По умолчанию

1) Уточните, какие именно темы пройдены, чтобы было понятно, что ожидается в коде.
2) Дополнительный бросок на каждую ничью?
Если не использовать массив и давать допбросок на каждую ничью, то примерно следующее:
Код:
bool Game(){
    system("cls");
    
    int menu_item, a_win = 0, b_win = 0, a_result, b_result;
    while (a_win + b_win < 5) {
        cout << "Игра:\n"
             << "1. Играть\n"
             << "2. Сброс\n"
             << "3. Выход\n"
             << ">";
        cin >> menu_item;
        switch (menu_item) {
            case 1:
                a_result = randomGen();
                b_result = randomGen();
                cout << "A: " << a_result << " B: " << b_result << "\n\n";
                if (a_result > b_result) {
                    ++a_win;
                } else if (b_result > a_result) {
                    ++b_win;
                }
                break;
            case 2:
                return false;
            case 3:
                return true;
            default:
                break;
        }
    }

    cout << "A: " << a_win << " B: " << b_win << "\n";
    if (a_win > b_win) {
        cout << "A wins\n";
    } else {
        cout << "B wins\n";
    } 
    
    system("pause");
    return false;
}
Код не запускал.
__________________
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме   Ответить с цитированием
Старый 08.07.2019, 13:14   #3
Shade01
Новичок
 
Регистрация: 07.07.2019
Сообщений: 2
Репутация: 10
По умолчанию

арифмические операторы с числами
алгоритмы
логические операторы
преобразование типов
лесенка if - else
циклы for / while
переменные и типы данных
массивы

названия тем которые вспомнила.
спасибо за код. он не дает дополнительного хода, а просто не засчитывает ход *ничьи*.
кажется я примерно поняла что требуется. после работы поэкспериментирую
Shade01 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 13:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 15:23
Не дать скрыться модальной форме по кнопке "Свернуть все окна" Conejo Общие вопросы Delphi 6 07.04.2016 03:22
Автоматическое нажатие "дать доступ" в Skype при подключении сторонней программы. Floksy Win Api 15 24.02.2013 03:50
Программка: "из прямого кода в дополнительный" (с++) Olya90 Помощь студентам 3 27.04.2009 09:45


21:25.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.