Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 29.10.2016
Сообщений: 7
1

Короткие нарды

01.12.2016, 21:43. Показов 3012. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день
Проблема с короткими нардами. После выброса костей, старые положения фишек отображаются вместе с новыми.
Доска разбита на верхнюю и нижнюю часть.
В строках 66-92 происходит заполнение массива знаков tab[][] данными из структуры о состоянии игры stan_gry[].ile .
Посоветуйте пожалуйста как нужно изменять tab[][] в функции. Передавать через указатель?
Заранее благодарен.

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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
struct pionki_pl{
int ile;
bool gracz; /// true_O gr_1, false_X gr_2
};
pionki_pl stan_gry[24];
 
    char tab[12][12];
    int szerokosc = 11;
    int wysokosc = 10;
    int a = 1;
    int b = 6;
 
 
 
///**********************************************************************************************
///**********************************************************************************************
void inicjalizacja_planszy(){
    stan_gry[0].ile=2;
    stan_gry[0].gracz=false;
    stan_gry[1].ile=0;
    stan_gry[2].ile=0;
    stan_gry[3].ile=0;
    stan_gry[4].ile=0;
    stan_gry[5].ile=5;
    stan_gry[5].gracz=true;
    stan_gry[6].ile=0;
    stan_gry[7].ile=3;
    stan_gry[7].gracz=true;
    stan_gry[8].ile=0;
    stan_gry[9].ile=0;
    stan_gry[10].ile=0;
    stan_gry[11].ile=5;
    stan_gry[11].gracz=false;
    stan_gry[12].ile=5;
    stan_gry[12].gracz=true;
    stan_gry[13].ile=0;
    stan_gry[14].ile=0;
    stan_gry[15].ile=0;
    stan_gry[16].ile=3;
    stan_gry[16].gracz=false;
    stan_gry[17].ile=0;
    stan_gry[18].ile=5;
    stan_gry[18].gracz=false;
    stan_gry[19].ile=0;
    stan_gry[20].ile=0;
    stan_gry[21].ile=0;
    stan_gry[22].ile=0;
    stan_gry[23].ile=2;
    stan_gry[23].gracz=true;
 
    ///tablica znakow
    for (int i=0;i<10;i++){
        for (int j=0;j<12;j++){
            tab[i][j] = ' ';
        }
    }
}
///**********************************************************************************************
///**********************************************************************************************
void plansza_gorna_znaki(){
 
            // cout << endl << endl << endl;
            /// gorna plansza
            for (int i=12;i<24;i++){
                for ( int pocz = stan_gry[i].ile; pocz > 0; pocz--){
                    if (stan_gry[i].gracz == true)
                        tab[pocz-1][i-szerokosc-1] = 'o';
                        else
                            if (stan_gry[i].gracz == false)
                                tab[pocz-1][i-szerokosc-1] = 'x';
                }
            }
}
///**********************************************************************************************
///**********************************************************************************************
void plansza_dolna_znaki(){
            /// dolna plansza
            for (int i=0;i<12;i++){
                for (int pocz = stan_gry[i].ile; pocz>0; pocz--)
                    if (stan_gry[i].gracz == true)
                        tab[wysokosc - pocz][szerokosc - i] = 'o' ;
                        else
                            if (stan_gry[i].gracz == false)
                                tab[wysokosc - pocz][szerokosc - i] = 'x';
            }
}
///**********************************************************************************************
///**********************************************************************************************
void pisz_plansze(){
 
    cout << "13 14 15 16 17 18 19 20 21 22 23 24 " << endl;
 
    for (int i=0 ; i<10 ; i++){
       if (i==5) cout << endl << endl;
            for (int j=0;j<12;j++){
                cout << tab[i][j]<<"  ";
            }
        cout << endl;
    }
    cout << "12 11 10 9  8  7  6  5  4  3  2  1 " << endl;
    }
///**********************************************************************************************
///**********************************************************************************************
void player_1 (){
cout << "gracz_1_O_true " << endl;
 
int kosc_1 = a+rand()%(b-a+1);
int kosc_2 = a+rand()%(b-a+1);
int suma_kosci = kosc_1+kosc_2;;
int otkuda =0;
int kuda = 0;
int chod = 0;
cout << "kosc_1 " << kosc_1 << endl;
cout << "kosc_2 " << kosc_2 << endl;
cout << "suma   " << suma_kosci << endl;
// 6+6 ???
    od_poczatku:
    do{
     cout << "otkuda " << endl;
     cin >> otkuda;
     cout << "kuda " << endl;
     cin >> kuda;
     chod = otkuda - kuda;
         if ((chod != kosc_1 && chod != kosc_2 && chod != suma_kosci ) ||
             (stan_gry[kuda-1].ile == 5) ||
             ((stan_gry[kuda-1].ile > 1) && (stan_gry[kuda-1].gracz == false)) ||
             (stan_gry[otkuda-1].ile == 0))
             {
                cout << "NOPE";
                goto od_poczatku;
                 } else
                        stan_gry[kuda-1].ile += 1;
                        stan_gry[kuda-1].gracz = true;
                        stan_gry[otkuda-1].ile = stan_gry[otkuda-1].ile - 1;
                        //cout << endl;
                        //cout << "SOSTOJANIE " << stan_gry[otkuda-1].ile << endl;
 
    suma_kosci -=  chod;
    }while(suma_kosci != 0);
}
///**********************************************************************************************
///**********************************************************************************************
void player_2 (){
cout << "gracz_2_X_false "<< endl;
 
int kosc_1 = a+rand()%(b-a+1);
int kosc_2 = a+rand()%(b-a+1);
int suma_kosci = kosc_1+kosc_2;
int otkuda = 0;
int kuda = 0;
int chod = 0;
cout << "kosc_1 " << kosc_1 << endl;
cout << "kosc_2 " << kosc_2 << endl;
cout << "suma   " << suma_kosci << endl;
// 6+6 ???
    od_poczatku_2:
    do{
     cout << "otkuda " << endl;
     cin >> otkuda;
     cout << "kuda " << endl;
     cin >> kuda;
     chod = kuda - otkuda;
         if ((chod != kosc_1 && chod != kosc_2 && chod != suma_kosci ) ||
             (stan_gry[kuda-1].ile == 5) ||
             ((stan_gry[kuda-1].ile > 1) && (stan_gry[kuda-1].gracz == true)) ||
             (stan_gry[otkuda-1].ile == 0))
             {
                cout << "NOPE";
                goto od_poczatku_2;
                 } else
                        stan_gry[kuda-1].ile += 1;
                        stan_gry[kuda-1].gracz = false;
                        stan_gry[otkuda-1].ile -= 1;
 
    suma_kosci -=  chod;
    }while(suma_kosci != 0);
}
///**********************************************************************************************
int main()
{
bool gra = true;
 
srand(time(NULL));
inicjalizacja_planszy();
 
plansza_gorna_znaki();
plansza_dolna_znaki();
 
pisz_plansze();
 
    while (gra != false){
    player_1();
    player_2();
    gra=false;
    }
 
plansza_gorna_znaki();
plansza_dolna_znaki();
 
pisz_plansze();
 
   system ("PAUSE");
   return 0;
}
Добавлено через 6 часов 31 минуту
Исправил
проблема была в массиве знаков доски. Тема закрыта.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2016, 21:43
Ответы с готовыми решениями:

программа в виде тетриса(нарды, шашки) или вращения планет по орбите
Мне нужна граффическая программа в виде тетриса(нарды, шашки) или вращения планет по орбите. Кому...

короткие коды с ********
всем привет я решил создать общую тему по сокращению кодов (если у кого есть по короче по желанию...

Написать короткие комментарии к коду
Ребята, напишите пожалуйста короткие комментарии к коду программы - тема Очередь/Перегрузка...

Строки: найти все самые короткие слова сообщения
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются...

0
01.12.2016, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2016, 21:43
Помогаю со студенческими работами здесь

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

Описать функцию дополнющую короткие строки файла пробелами справа
Нужна программа. Задача звучит так: Считая, что непустой текстовый файл f разбит на строки, длина...

В текстовом файле найти самые длинные и самые короткие слова и удалить их из файла.
Людти добрые помогите пожалуйсто кателок уже совсоем не варит задача :в текстовом файле найти самые...

Изменить правила игры короткие нарды на длинные
Здравствуйте, а возможно ли имея исходник коротких нард сделать из них длинные с помощью изменения...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru