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

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

Войти
Регистрация
Восстановить пароль
 
Piligreen
0 / 0 / 0
Регистрация: 11.12.2010
Сообщений: 5
#1

Игра Сапёр - C++

27.11.2011, 11:41. Просмотров 974. Ответов 2
Метки нет (Все метки)

1) Сгенерировать матрицу N*M элементов char.
2) Расставить случайным образом K символов ' * ', остальные клетки заполнить - ' _ '.
При этом, N, M, K - вводятся с клавы.
3) Для каждого элемента ' _ ', посчитать кол-во ' * ', вокруг, и если это число больше 0, то записать его в эту ячейку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 11:41     Игра Сапёр
Посмотрите здесь:

сапёр - C++
здравствуйте извините, если повторяюсь (видела, что подобная тема была, причём не одна, но не нашла там того, что надо), но мне срочно...

Делаю сапёр. что тут не так???? - C++
#include<iostream.h> #include<dos.h> #include<time.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> int main (void) ...

Рандомизация игры "Сапёр" - C++
Суть. Писал сапёра,для рандомной расстановки мин использовал фунцию rand(). Ну всё работает. Ну это только,когда я запустил первый раз,в...

Игра в кости C++ - C++
Написать программу, которая имитирует игру в кости. Игроки (2 человека) кидают по 2 кубика(генератор случайных чисел). У кого сумма на...

Игра в слова - C++
Публикую исходный текст для игры в слова. Хотелось бы узнать как улучшить текст программы. Прошу помощи в доработке работы с...

Простая игра 3D на C++ - C++
Здравствуйте! Я бы хотел попробовать написать простенькую 3D игру на C++. Физический движок мне не нужен, так как физики там сложной не...

Игра пятнашки - C++
Игра пятнашки в которой передвижение пустой клетки выполняется с помошью стрелочек

Игра НИМ - C++
Хочу реализовать игру НИМ так, что бы не с консолью работать, а с виндовсовским окном, с управление кнопками, отображением количества...

Игра в кости - C++
Написать программу, которая имитирует игру в кости. Игроки (2 человека) кидают по 2 кубика (генерировать значения генератором случайных...

Игра НИМ на С - C++
Нужна игра ним на С с базовыми правилами (кто берет последний камень - проигрывает).

игра шахматы - C++
Пришлите кто нибудь исходник игры Шахматы на С++!!! пожалуйста очень надо))))))))))) Добавлено через 19 секунд очень надо))

Игра Лото - C++
Нужно написать программу в консоли в которой основой будет циклы и массивы (желательно что бы была проверка на совпадение между массивами и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
27.11.2011, 15:22     Игра Сапёр #2
Сделал пока только для НЕ крайних элементов(Которые по бокам матрицы расположены), а это так сказать trial версия(Не со всеми возможностями), полностью сделаю немного позже, где 95 и 42 выводит, пока не обращайте внимания(Это коды символом '_' и '*')
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
#include <iostream> 
#include <conio.h>
#include <ctime> 
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    
    unsigned int min=0,n,m,k,i,j,i2,j2,temp,sosedn;
    
    cout<<"Input N  ";cin>>n;
    cout<<endl<<"Input M  ";cin>>m;
    rep:;
    cout<<endl<<"Input K  ";cin>>k;
    if(k>=n*m)
    {
    cout<<"Very hight number of mins!Please, select correkt number , which smaller  "<<n*m;
    goto rep;
    }
    unsigned int **massiv=new unsigned int *[n];
    for(i=0;i<n;i++)
        massiv[i]=new unsigned int [m];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
    massiv[i][j]='_';
    
    while(min<k){
    for(i=0;i<n;i++){
        for(j=0;j<m;j++)
        {
            
            temp=rand()%2;
    
            if((temp==0)&&(min<k))
    {
        if(massiv[i][j]!='*')
        {   massiv[i][j]='*';
        min++;}
            }
        }}
    }
 
    cout<<endl<<"===========================";
    cout<<endl;
        for(i=0;i<n;i++){
        cout<<endl;
            for(j=0;j<m;j++){
cout<<" ";
    if(massiv[i][j]==95)
        cout<<'_';
    else
        cout<<'*';
            }}
 
    
// теперь будем высчитывать количество рядом мин
        
        for(i=0;i<n;i++){
        for(j=0;j<m;j++)
        {sosedn=0;
        if(massiv[i][j]=='_')
        {
            if(((i>0)&&(j>0))&&((i<n-1)&&(j<m-1))){
        for(i2=i-1;i2<=i+1;i2++){
        for(j2=j-1;j2<=j+1;j2++){
            if(massiv[i2][j2]=='*'){
                sosedn++;}
        
 
        }
        }massiv[i][j]=sosedn;
            }
        }
        
 
 
        }}
        cout<<endl<<"===========================";
    cout<<endl;
        for(i=0;i<n;i++){
        cout<<endl;
            for(j=0;j<m;j++){
cout<<" "<<massiv[i][j];
        }}
 
        getch();
 
 
        for( int i=0; i < n; i++ ) { 
delete [] massiv[i]; 
}; 
delete [] massiv;
    return 0;
}
DenCHS200
32 / 32 / 1
Регистрация: 07.10.2011
Сообщений: 117
28.11.2011, 20:50     Игра Сапёр #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
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
#include <iostream> 
#include <conio.h>
#include <ctime> 
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
        srand(time(0));
        
        unsigned int min=0,n,m,k,i,j,i2,j2,temp,sosedn;
        
        cout<<"Input N  ";cin>>n;
        cout<<endl<<"Input M  ";cin>>m;
        rep:;
        cout<<endl<<"Input K  ";cin>>k;
        if(k>=n*m)
        {
        cout<<"Very hight number of mins!Please, select correkt number , which smaller  "<<n*m;
        goto rep;
        }
        unsigned int **massiv=new unsigned int *[n];
        for(i=0;i<n;i++)
                massiv[i]=new unsigned int [m];
        for(i=0;i<n;i++)
                for(j=0;j<m;j++)
        massiv[i][j]='_';
        
        while(min<k){
        for(i=0;i<n;i++){
                for(j=0;j<m;j++)
                {
                        
                        temp=rand()%2;
        
                        if((temp==0)&&(min<k))
        {
                if(massiv[i][j]!='*')
                {       massiv[i][j]='*';
                min++;}
                        }
                }}
        }
 
        cout<<endl<<"===========================";
        cout<<endl;
                for(i=0;i<n;i++){
                cout<<endl;
                        for(j=0;j<m;j++){
cout<<" ";
        if(massiv[i][j]==95)
                cout<<'_';
        else
                cout<<'*';
                        }}
 
        
// теперь будем высчитывать количество рядом мин
                
                for(i=0;i<n;i++){
                for(j=0;j<m;j++)
                {sosedn=0;
                if(massiv[i][j]=='_')
                {
                        if(((i>0)&&(j>0))&&((i<n-1)&&(j<m-1))){
                for(i2=i-1;i2<=i+1;i2++){
                for(j2=j-1;j2<=j+1;j2++){
                        if(massiv[i2][j2]=='*'){
                                sosedn++;}
                
 
                }
                }//massiv[i][j]=sosedn;
                        }
 
                        else if((i==0)&&(j==0))// если левый верхний угол
                        {if (massiv[1][0]=='*')
                        sosedn++;
                        if (massiv[1][1]=='*')
                        sosedn++;
                        if (massiv[0][1]=='*')
                        sosedn++;
                        
                        }
 
                        else if((i==n-1)&&(j==0))// если левый нижний угол
                        {if (massiv[n-2][0]=='*')
                        sosedn++;
                        if (massiv[n-2][1]=='*')
                        sosedn++;
                        if (massiv[n-1][1]=='*')
                        sosedn++;
                        
                        }
                        else if((i==n-1)&&(j==m-1))// если правый нижний угол
                        {if (massiv[n-2][m-1]=='*')
                        sosedn++;
                        if (massiv[n-2][m-2]=='*')
                        sosedn++;
                        if (massiv[n-1][m-2]=='*')
                        sosedn++;
                    
                        }
                        else if((i==0)&&(j==m-1))// если левый верхний угол
                        {if (massiv[0][m-2]=='*')
                        sosedn++;
                        if (massiv[1][m-2]=='*')
                        sosedn++;
                        if (massiv[1][m-1]=='*')
                        sosedn++;
                        
                        }
 
                        else {
                        if(i==0)
                        {
                        if(massiv[0][j-1]=='*')
                        sosedn++;
                        if(massiv[0][j+1]=='*')
                        sosedn++;
                        if(massiv[1][j-1]=='*')
                        sosedn++;
                        if(massiv[1][j]=='*')
                        sosedn++;
                        if(massiv[1][j+1]=='*')
                        sosedn++;
                        
                        }
                        else if(i==n-1)
                        {
                        if(massiv[n-1][j-1]=='*')
                        sosedn++;
                        if(massiv[n-1][j+1]=='*')
                        sosedn++;
                        if(massiv[n-2][j-1]=='*')
                        sosedn++;
                        if(massiv[n-2][j]=='*')
                        sosedn++;
                        if(massiv[n-2][j+1]=='*')
                        sosedn++;
                        
                        }
                        else if(j==0)
                        {
                        if(massiv[i-1][0]=='*')
                        sosedn++;
                        if(massiv[i+1][0]=='*')
                        sosedn++;
                        if(massiv[i-1][1]=='*')
                        sosedn++;
                        if(massiv[i][1]=='*')
                        sosedn++;
                        if(massiv[i+1][1]=='*')
                        sosedn++;
                
                        }
                        else // если j==m-1 сюда попадаем в других ситуациях, так как других уже не будет
                        {
                        if(massiv[i-1][m-1]=='*')
                        sosedn++;
                        if(massiv[i+1][m-2]=='*')
                        sosedn++;
                        if(massiv[i-1][m-2]=='*')
                        sosedn++;
                        if(massiv[i][m-2]=='*')
                        sosedn++;
                        if(massiv[i+1][m-2]=='*')
                        sosedn++;
                        
                        }
                        
                        }
 
massiv[i][j]=sosedn;
 
                }
                
 
 
                }}
                cout<<endl<<"===========================";
        cout<<endl;
                for(i=0;i<n;i++){
                cout<<endl;
                        for(j=0;j<m;j++){
                            cout<<" ";
                            if(massiv[i][j]=='*')
                                cout<<"*";
                            else
                            cout<<massiv[i][j];
                }}
 
                getch();
 
 
                for( int i=0; i < n; i++ ) { 
delete [] massiv[i]; 
}; 
delete [] massiv;
        return 0;
}
Ответ Создать тему
Опции темы

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