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

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

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

Игра "Подкидной дурак" C++
C++ Карточная игра "Дурак"
C++ Карточная игра "Дурак" - Ошибка загрузки dll карт
C++ Загрузка информации из файла (система рекордов в игре "Змейка")
C++ Как реализовать взаимодействие классов в игре "Змейка"
Случайное распределение кораблей по полю в игре "морской бой" C++
Как сделать систему ходов в карточной игре? C++
Сделать статистику игроков в игре "Крестики-нолики" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tomaticus
 Аватар для tomaticus
46 / 46 / 2
Регистрация: 02.01.2011
Сообщений: 505
27.06.2012, 12:20     Алгоритм ходов компьютера в карточной игре "Дурак" #2
Создать, к примеру, массив. Каждый раз проходить проверку, и самую младшую карту, не козырь, перемещать в начало. таким образом появится фильтрация. Если ход компьютера, то он ходит самой младшей картой. Если ход игрока, а компьютеру надо побить, то он сначала проверяет карту игрока, и дальше самой первой картой, после карты игрока, его же масти, бьет его карту.
Все это реализовать можно с помощью struct. В котором будет храниться информация о карте, и о масти.
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];}
}
//---------------------------------------------------------------------------
Вот то что сделал насчет перетасовки и раздачи карт. Как находить наименьшую карту вот только. Просмартивать все карты в руке компьютера и пробегать по матрице с картами?
Yandex
Объявления
27.06.2012, 13:16     Алгоритм ходов компьютера в карточной игре "Дурак"
Ответ Создать тему
Опции темы

Текущее время: 10:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru