Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.64
Dank94
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 23
#1

Алгоритм ходов компьютера в карточной игре "Дурак" - C++

27.06.2012, 12:14. Просмотров 4425. Ответов 2
Метки нет (Все метки)

Здравствуйте. Помогите пожалуйста с реализацией алгоритма ходов компьютера. Я понимаю что должно быть что-то по типу просчета количесва карт каждой масти в отбое и на руках у компьютера и нахождение масти которая наименее вероятна у игрока плюс просчет достоинства карты. Но как это реализовать не очень понимаю
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2012, 12:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм ходов компьютера в карточной игре "Дурак" (C++):

Алгоритм хода компьютера в игре "Крестики-Нолики" на неограниченном поле - C++
Крестики нолики на неограниченном поле

Как сделать систему ходов в карточной игре? - C++
Здравствуйте,я делаю карточную игру,но столкнулся с тем,что не знаю как сделать ходы по очереди,тоесть, чтобы игроки ходили по...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Карточная игра "Дурак" - Ошибка загрузки dll карт - C++
Есть проект (вроде должен работать). Запуская в Visual Studio 2010 получаю ошибку "Ошибка загрузки dll карт". Самому исправить не...

Карточная игра "Дурак", вывод карт на экран - C++
Пишу курсовую, карточного "Дурака", столкнулся с проблемой выводом карт на экран. Нужно чтобы карты игрока выводились внизу по центру(в...

Карточная игра "Дурак" - C++
Народ есть у кого нибудь исходники "дурака",очень надо..

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
tomaticus
47 / 47 / 2
Регистрация: 02.01.2011
Сообщений: 505
27.06.2012, 12:20 #2
Создать, к примеру, массив. Каждый раз проходить проверку, и самую младшую карту, не козырь, перемещать в начало. таким образом появится фильтрация. Если ход компьютера, то он ходит самой младшей картой. Если ход игрока, а компьютеру надо побить, то он сначала проверяет карту игрока, и дальше самой первой картой, после карты игрока, его же масти, бьет его карту.
Все это реализовать можно с помощью struct. В котором будет храниться информация о карте, и о масти.
0
Dank94
0 / 0 / 0
Регистрация: 03.03.2011
Сообщений: 23
27.06.2012, 13:16  [ТС] #3
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
char* ruka_igrok[36];
char* ruka_komp[36];
char *kozir;
//---------------------------------------------------------------------------
     int strok=3,stolb=7,kart=0;
//---------------------------------------------------------------------------
  char* card[4][9]=     {{ "6ch" , "7ch","8ch","9ch","10ch","Jch","Qch","Kch","Ach"},
                            {"6pi","7pi","8pi","9pi","10pi","Jpi","Qpi","Kpi","Api"},
                            {"6kr","7kr","8kr","9kr","10kr","Jkr","Qkr","Kkr","Akr"},
                            {"6bu","7bu","8bu","9bu","10bu","Jbu","Qbu","Kbu","Abu"} } ;
//---------------------------------------------------------------------------
   char* Array3[4][9];
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//char* k[36]=     { "6ch" , "7ch","8ch","9ch","10ch","Jch","Qch","Kch","Ach","6pi","7pi","8pi","9pi","10pi","Jpi","Qpi","Kpi","Api","6kr","7kr","8kr","9kr","10kr","Jkr","Qkr","Kkr","Akr","6bu","7bu","8bu","9bu","10bu","Jbu","Qbu","Kbu","Abu"}  ;
 
 
 
 int Array2[4][9];
 for (int zap=0;zap<4;zap++)
 {
  for(int zap1=0;zap1<9;zap1++)
        {
         Array2[zap][zap1]=0;
        }
 }
 
 
 int a1,b1;
 
 
 
 int k=0;
 int a = 0;
 int b = 0;
 
 randomize();
  while (k<36)
  {
 
  a = k / 9;
  b = k % 9;
 
 a1=rand()%4;
 b1=rand()%9;
 
 if(Array2[a1][b1]!=1)
 {
 
 Array3[a][b]=card[a1][b1];
  Array2[a1][b1]=1;
 
 
  k++;
 }
 }
 
 
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
 
kozir=Array3[3][8];
Label1->Caption=kozir;
 
 
 
while (kart<12){
                   if(kart<6){
                ruka_igrok[kart]=Array3[strok][stolb];}
                if(kart>=6){
                ruka_komp[kart-6]=Array3[strok][stolb];
                        }
 
                 stolb-=1;
                 if(stolb<0){
                 stolb=8;
                 strok-=1;}
                 kart++;
                }
kart=0;
 
int m;
int n;
for(m=0;m<6;m++){Memo3->Lines->Strings[0]=Memo3->Lines->Strings[0] + " " + ruka_igrok[m];}
for(n=0;n<6;n++){Memo2->Lines->Strings[0]=Memo2->Lines->Strings[0] + " " + ruka_komp[n];}
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button3Click(TObject *Sender)
{   bool flag;
int count_igrok;
int m;
for(count_igrok=6;count_igrok>=0;count_igrok--)
{
        if(Edit1->Text==ruka_igrok[count_igrok])
        {
                Memo1->Lines->Strings[1]=Memo1->Lines->Strings[1]+" "+Edit1->Text;
                flag=true;
                Edit1->Text=count_igrok;
         }
 
}
 
if(flag=true){
        for(int raz=0;raz<6-count_igrok;raz++)
        {
          ruka_igrok[count_igrok]=ruka_igrok[count_igrok+1];
                }
}        Memo3->Clear();
   for(m=0;m<6;m++){Memo3->Lines->Strings[0]=Memo3->Lines->Strings[0] + " " + ruka_igrok[m];}
}
//---------------------------------------------------------------------------
Вот то что сделал насчет перетасовки и раздачи карт. Как находить наименьшую карту вот только. Просмартивать все карты в руке компьютера и пробегать по матрице с картами?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2012, 13:16
Привет! Вот еще темы с ответами:

Игра "Подкидной дурак" - C++
Здравствуйте! Подскажите пожалуйста как сделать, чтоб карты выводились по 6 шт в ряд, а не столбиком? #include &lt;iostream&gt; #include...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...


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

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

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