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

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

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

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

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

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

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

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

Определить, верно ли, что матрица заполнена как в известной игре "Сапёр"? - C++
Задаётся двумерный массив с одинаковым количеством строки и столбцов не более 100 - размер массива. Элементами массива будут целые числа от...

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

Игра слов, игра Scrabble - C++
Задание: Создать программу для решения задачи построения слова из некоторого множества букв (игра Scrabble) используя алгоритмы поиска в...

Игра - C++
Помогите решить следующую задачу: Написать программу, которая отгадывает задуманное число в интервале за n вопросов типа "Ваше число,...

2
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;
}
1
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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2011, 20:50
Привет! Вот еще темы с ответами:

Игра - C++
Доброе время суток! Хочу написать свою первую, простую игру на С++. Посоветуйте с чего начать.

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

Игра на C++ - C++
Здравствуйте! Интересует такой вопрос: При знаниях: Переменные, условия, циклы, функции, библиотеки в языке C++, можно ли создать...

игра (с++) - C++
Здравствуйте! Нужно составить игру про шарики. Если в линии встречаются 3 или больше одинаковых цветов шарико, то нужно этот ряд шаров...


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

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

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