Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 06.11.2011
Сообщений: 26
1

Игра в камень,ножницы бумага.Что можно улучшить\оптимизировать?

06.11.2011, 20:52. Показов 4400. Ответов 11
Метки нет (Все метки)

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
// KamenNozhnicyBumaga.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "time.h"
#include "stdio.h"
#include "stdlib.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int hodusera;
    int hodcomp;
 
    printf("-=Igra s komputerom v kamen-nozhnicy-bumaga=-\nID:Kamen=1,bumaga=2,nozhnice=3\nKamen,nozhnicy,bumaga!\n1,2,3!\n");
    srand(time(0));
    hodcomp=1+(rand()%3);
    printf("Hod compa=%d\n",hodcomp);
    scanf("%d",&hodusera);
    if (hodusera<0 || hodusera>3)
        printf("Vvedeno necorectnoe znachenie.\n");
    
    
                                  if (hodusera==hodcomp) {
                                   printf("Nichya!\n");
                                   return 0;
                                                         }
       if (hodcomp==3 && hodusera==1)
        printf("Vy pobedili\n");
       if (hodcomp==1 && hodusera==2)
        printf("Vy pobedili!\n");
       if (hodcomp==2 && hodusera==3)
        printf("Vy pobedili!\n");
       if (hodcomp==2 && hodusera==1)
        printf("Vy proigrali.\n");
       if (hodcomp==3 && hodusera==2)
        printf("Vy proigrali.\n");
       if (hodcomp==1 && hodusera==3)
        printf("Vy proigrali.\n");
       
                                   printf("Igra okonchena.\n");         
 
    
    return 0;
}
Что в этом коже можно улучшить\оптимизировать?
Что можно добавить?
Что убрать?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2011, 20:52
Ответы с готовыми решениями:

Игра "камень ножницы бумага"
решил написать игру камень ножницы бумага но всё работает кроме самой логики игры он не выводит...

Камень, ножницы, бумага
Здравствуйте, товарищи.Прошу оценить мой код по критериям эффективности и правильности.Так же приму...

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

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

11
363 / 364 / 167
Регистрация: 11.06.2010
Сообщений: 703
06.11.2011, 20:58 2
Например, так:
C
1
2
3
4
5
6
7
if ( (hodcomp==3 && hodusera==1) || 
     (hodcomp==1 && hodusera==2) ||
     (hodcomp==2 && hodusera==3) )  printf("Vy pobedili!\n");
 
if ( (hodcomp==2 && hodusera==1) ||
     (hodcomp==3 && hodusera==2) ||
     (hodcomp==1 && hodusera==3) )  printf("Vy proigrali.\n");
1
1 / 1 / 1
Регистрация: 06.11.2011
Сообщений: 26
06.11.2011, 21:57  [ТС] 3
Цитата Сообщение от -comrade- Посмотреть сообщение
Например, так:
C
1
2
3
4
5
6
7
if ( (hodcomp==3 && hodusera==1) || 
     (hodcomp==1 && hodusera==2) ||
     (hodcomp==2 && hodusera==3) )  printf("Vy pobedili!\n");
 
if ( (hodcomp==2 && hodusera==1) ||
     (hodcomp==3 && hodusera==2) ||
     (hodcomp==1 && hodusera==3) )  printf("Vy proigrali.\n");
Спасибо,может ещё идеи есть?

Добавлено через 46 минут
Вверх!
0
363 / 364 / 167
Регистрация: 11.06.2010
Сообщений: 703
06.11.2011, 22:14 4
Ну вообще интересная задача. Вы сами себе такую ​​придумали, или вам задали?
0
DKOI
06.11.2011, 22:57
  #5

Не по теме:

Переменная hodusera вынесла мне мозг :)

0
1 / 1 / 1
Регистрация: 06.11.2011
Сообщений: 26
06.11.2011, 23:01  [ТС] 6
Цитата Сообщение от -comrade- Посмотреть сообщение
Ну вообще интересная задача. Вы сами себе такую ​​придумали, или вам задали?
Задали в "Белхарде".

Добавлено через 43 секунды
Цитата Сообщение от DKOI Посмотреть сообщение

Не по теме:

Переменная hodusera вынесла мне мозг :)

Почему?С ней что-то не так?
0
363 / 364 / 167
Регистрация: 11.06.2010
Сообщений: 703
06.11.2011, 23:06 7
9l noka 4To Hy6, зачем вы выводите значение, которое "выбрал компьютер" до того как свое значение вводит user?
0
1 / 1 / 1
Регистрация: 06.11.2011
Сообщений: 26
06.11.2011, 23:15  [ТС] 8
Цитата Сообщение от -comrade- Посмотреть сообщение
9l noka 4To Hy6, зачем вы выводите значение, которое "выбрал компьютер" до того как свое значение вводит user?
Это для тестирования,в "правильной" версии этого не будет.

Добавлено через 1 минуту
Цитата Сообщение от -comrade- Посмотреть сообщение
9l noka 4To Hy6, зачем вы выводите значение, которое "выбрал компьютер" до того как свое значение вводит user?
Может у Вас есть идеи как улучшить рандом значений?Ибо вначале он довольно часто выбирает "2".
0
363 / 364 / 167
Регистрация: 11.06.2010
Сообщений: 703
06.11.2011, 23:25 9
Цитата Сообщение от 9l noka 4To Hy6 Посмотреть сообщение
Может у Вас есть идеи как улучшить рандом значений?Ибо вначале он довольно часто выбирает "2".
https://www.cyberforum.ru/cpp-... post222553
0
Форумчанин
Эксперт CЭксперт С++
8169 / 5017 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
07.11.2011, 00:01 10
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
#include <iostream>
#include <conio.h>
#include <clocale>
#include <ctime>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int user, comp;
    srand(time(NULL));
    char* x[3] = {"Êàìåíü", "Íîæíèöû", "Áóìàãà"};
    for(;;)
    {
        system("cls");
        cout<< "1. "<< x[0]
            << "\n2. "<< x[1]
            << "\n3. "<< x[2]
            << "\nÂàø âûáîð: ";
        do {cin>> user; } while (user > 3 || user < 1);
        user--;
        comp = rand() % 3;
        cout<< "Âû: "<< x[user]
            << "\nÊîìï: "<< x[comp]<< endl;
        if (user == comp) cout<< "Íè÷üÿ";
        else
        if ((user == 0 && comp == 1) ||
            (user == 1 && comp == 2) ||
            (user == 2 && comp == 0))
            cout<< "Âû âûèãðàëè";
        else cout<< "Âû ïðîèãðàëè";
        if (getch()!= 'e') continue;
        else break;
    }
    return 0;
}
Игра на щелбаны:
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
#include <iostream>
#include <conio.h>
#include <clocale>
#include <ctime>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int user, comp, usercount = 0, compcount = 0;
    srand(time(NULL));
    char* x[3] = {"Êàìåíü", "Íîæíèöû", "Áóìàãà"};
    while (usercount < 5 && compcount < 5)
    {
        system("cls");
        cout<< "1. "<< x[0]
            << "\n2. "<< x[1]
            << "\n3. "<< x[2]
            << "\nÂàø âûáîð: ";
        do {cin>> user; } while (user > 3 || user < 1);
        user--;
        comp = rand() % 3;
        cout<< "Âû: "<< x[user]
            << "\nÊîìï: "<< x[comp]<< endl;
        if (user == comp) cout<< "Íè÷üÿ"<< endl;
        else
        if ((user == 0 && comp == 1) ||
            (user == 1 && comp == 2) ||
            (user == 2 && comp == 0))
        {
            cout<< "Âû âûèãðàëè è äàåòå ùåëáàí êîìïüþòåðó\n";
            compcount++;
        }
        else 
        {
             cout<< "Âû ïðîèãðàëè è ïîëó÷àåòå ùåëáàí îò êîìïüþòåðà\n";
             usercount++;
        }
        cout<< "Ó âàñ øèøåê: "<< usercount<< endl
            << "Ó êîìïüþòåðà øèøåê: "<< compcount<< endl;
        if (usercount == 5) cout<< "Âû ïðîèãðàëè, âèäиìî ÈÈ çàøåë ñëèøêîì äàëåêî";
        if (compcount == 5) cout<< "×åëîâåê óìíåå, ãëóïàÿ ìàøèíà";
        if (getch()!= 'e') continue;
        else break;
    }
    return 0;
}
0
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
07.11.2011, 11:48 11
Цитата Сообщение от -comrade- Посмотреть сообщение
if ( (hodcomp==3 && hodusera==1) || (hodcomp==1 && hodusera==2) || (hodcomp==2 && hodusera==3) ) printf("Vy pobedili!\n"); if ( (hodcomp==2 && hodusera==1) || (hodcomp==3 && hodusera==2) || (hodcomp==1 && hodusera==3) ) printf("Vy proigrali.\n");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch (hodcomp)
{
case 3
if(hoduser=1) вы победили
if(hoduser=2) вы проиграли
breck;
case 2
if(hoduser=3) вы победили
if(hoduser=1) вы проиграли
breck;
case 1
if(hoduser=2) вы победили
if(hoduser=3) вы проиграли
breck;
default:
ничья
}
0
1 / 1 / 1
Регистрация: 06.11.2011
Сообщений: 26
07.11.2011, 17:56  [ТС] 12
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch (hodcomp)
{
case 3
if(hoduser=1) вы победили
if(hoduser=2) вы проиграли
breck;
case 2
if(hoduser=3) вы победили
if(hoduser=1) вы проиграли
breck;
case 1
if(hoduser=2) вы победили
if(hoduser=3) вы проиграли
breck;
default:
ничья
}
Мне надо именно со структурой if.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2011, 17:56

Парсер математических выражений - можно ли оптимизировать и улучшить код
Добрый день возник следующий вопрос, в программировании не сильно большой гуру пошел на...

Консольная игра «камень-ножницы-бумага»
Всем привет, нужна ваша помощь в решении данной задачи. Заранее благодарен Создать консольную игру...

Игра камень,ножницы,бумага в Паскале
Составить программу камень,ножницы,бумага.Для двух играющих-пользователя и компьютера.Каждый из них...

Консольная игра камень-ножницы-бумага
Консольная игра камень ножницы бумага. Заранее извиняюсь за тупость , прост я совсем новичок в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.