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

Функция, в функции main() или общие переменные для нескольких функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка строк матрицы http://www.cyberforum.ru/cpp-beginners/thread684612.html
Задача: отсортировать (переставить) строки матрицы в порядке убывания значений наименьших элементов строк. Вот мой код. Помогите написать функцию Swap которая сортирует строки. #include <iostream> #include <stdlib.h> #include <ctime> using namespace std; const int size = 5;
C++ Вывести некий элемент массива Почему пишет что переменная V неопределена? И вобше как тогда вывести первый отрицательний елем. массива, и первый положетильний, идущий после первого отрицательного?#include<iostream> #include<conio.h> #include<stdlib.h> #include<locale.h> using namespace std; int main() { setlocale(LC_ALL,"ukrainian"); int n; int* arr; http://www.cyberforum.ru/cpp-beginners/thread684604.html
C++ Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Нужно написать программу вычисления местонахождения точки относительно фигуры(лежит ли данная точка внутри неё, на контуре или вне фигуры). В данном случае, это прямоугольник. Главная функция должна вызывать 4 дополнительных:введение параметра контура, введение координат,определение местонахождения и выведение определенного сообщения. Координаты вершин прямоугольника (–a,0), (a,0), (a,a), (–a,a)....
Дано натурально число: верно ли, что данное число начинается на А,а заканчивается на В(вво с клавы А и В) C++
Дано натурально число: верно ли, что данное число начинается на А,а заканчивается на В(вво с клавы А и В) помогите пожалуйста написать програмку на С++ Добавлено через 19 часов 18 минут вводишь исходное число, потом вводишь А и В, и проверяешь условие, число не должно быть однозначным. если оно однозначное - выводишь сообщение об ошибке, если нет, то делаешь условие: берешь первую цифру...
C++ Не производиться ввод при помощи функции gets(s) http://www.cyberforum.ru/cpp-beginners/thread684572.html
По непонятной мне причине не производиться ввод при помощи функции gets(s) или getline(cin, s). Если использовать просто cin, то проблем нет: //Рекурсия. Вычисление факториала. Функция, возвращающая // наибольший общий делитель. Функция возращающая строку в обратном // порядке. #include <iostream> #include <cstdlib> #include <cstdio> using namespace std;
C++ Указатель и рекурсия Подскажите почему не работает? (логика работы программы изложена в комментах к ней) #include <iostream> #include <windows.h> #include <string.h> #include <stdio.h> using namespace std; void reverse(char *s); int main() подробнее

Показать сообщение отдельно
Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 151
30.10.2012, 23:08  [ТС]     Функция, в функции main() или общие переменные для нескольких функций
Я видно не совсем понял тебя, да и я видно не правильно понимаю реализацию Объектов, в массиве, и работа с этими объектами, и занесение их в переменные, дальнейшая работа с ними, и удаление, с заполнением удалившихся, новыми, причем, надо будет знать какая переменная где...

Короче, вот сама игра, в целости. (ну тупом, варианте немного глюченом)(нужно откомпилировать, и посмотреть, суть игры...)
Кликните здесь для просмотра всего текста
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
211
212
213
214
215
216
217
218
219
220
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
int xMax=15;             //Мах размер карты по X
int yMax=20;             //Мах размер карты по Y
char map[15][20];        //двумерный массив карты
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
char pyla='.';           //Пуля
int xPyla[200],yPyla[200];     //Координаты Пули
bool Rpyla[200];              //Пуля Жива?
char Kpyla[200];              //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
char map2[15][20];       //Теневая карта
int free=0;         //свободный слот, для массивов
 
//Иницилизация массивов
for (int i=0; i<=200; i++)
{
    xPyla[i]=0;
    yPyla[i]=0;
    Rpyla[i]=false;
}
 
//Иницилизация матрицы карты
for (int i = 0; i< xMax; i++)      //Строки
{
    for (int j = 0; j< yMax; j++)  //столбцы
    {
        map[i][j] = ' ';         //То, чем карта заполняется
        map2[i][j] =' ';
    }
}
 
map[1][5]=voda;    map2[1][5]=voda;
map[1][6]=voda;    map2[1][6]=voda;
map[1][7]=voda;    map2[1][7]=voda;
map[1][8]=voda;    map2[1][8]=voda;
 
map[0][0]=hero;  //Установка на карте нашего персонажа
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < xMax; i++)
    {
        for (int j = 0; j < yMax; j++)
        {
            cout << map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
            for (int i=0; i<=200; i++)
            {
              if (Rpyla[i])
              {
                if (xPyla[i]==xMax-1 || xPyla[i]==0 || yPyla[i]==yMax-1 || yPyla[i]==0)
                  {
                    map[xPyla[i]][yPyla[i]]=' ';
                    xPyla[i]=0;
                    yPyla[i]=0;
                    Rpyla[i]=false;
                  }
                if (Rpyla[i])
                {
                  if (Kpyla[i]=='_')
                  {
                    map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                    xPyla[i]++;
                    map[xPyla[i]][yPyla[i]] = pyla;
                  }
                  else if (Kpyla[i]=='^')
                      {
                        map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                        xPyla[i]--;
                        map[xPyla[i]][yPyla[i]] = pyla;
                      }
                      else if (Kpyla[i]=='>')
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]++;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                          else
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]--;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                }
              }
              else
              {
                        
              }
           }
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                map[x][y] = map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (map[x][y+1]!=voda)
              {
                map[x][y] = map2[x][y];
                y++;
                map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (map[x+1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x++;
                map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (map[x-1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x--;
                map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Rpyla[free]=true;
               if (kyda=='_')
               {
                 map[x+1][y]=pyla;
                 xPyla[free]=x+1;
                 yPyla[free]=y;
                 Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     map[x-1][y]=pyla;
                     xPyla[free]=x-1;
                     yPyla[free]=y;
                     Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         map[x][y+1]=pyla;
                         yPyla[free]=y+1;
                         xPyla[free]=x;
                         Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         map[x][y-1]=pyla;
                         yPyla[free]=y-1;
                         xPyla[free]=x;
                         Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
        break;
    }
}
_getch();
return 0;
}


Как же мне спокойно оттуда отсоеденить: case -32....breake; (Тоесть её внутрености)(просто этот -32, выполняется очень часто, что приводит к лагам и вылетам...)
Вот, кстати как я пытался делать, ужасно конечно... =)
Кликните здесь для просмотра всего текста
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
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
class Pyla {
    int xPyla[50],yPyla[50];     //Координаты Пули
    const char pyla='.';         //Пуля
    bool Rpyla[50];              //Пуля Жива?
    char Kpyla[50];             //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
    
    //Иницилизация массивов
    for (int i=0; i<=50; i++)
    {
      xPyla[i]=0;
      yPyla[i]=0;
      Rpyla[i]=false;
    }
};
 
void Pyla::move(char map[15][20], map2[15][20], pyla)
{
    for (int i=0; i<=50; i++)
            {
              if (Rpyla[i])
              {
                if (xPyla[i]==xMax-1 || xPyla[i]==0 || yPyla[i]==yMax-1 || yPyla[i]==0)
                  {
                    map[xPyla[i]][yPyla[i]]=' ';
                    xPyla[i]=0;
                    yPyla[i]=0;
                    Rpyla[i]=false;
                  }
                if (Rpyla[i])
                {
                  if (Kpyla[i]=='_')
                  {
                    return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                    xPyla[i]++;
                    map[xPyla[i]][yPyla[i]] = pyla;
                  }
                  else if (Kpyla[i]=='^')
                      {
                        return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                        xPyla[i]--;
                        map[xPyla[i]][yPyla[i]] = pyla;
                      }
                      else if (Kpyla[i]=='>')
                          {
                            return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]++;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                          else
                          {
                            return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]--;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                }
              }
           }
}
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
int xMax=15;             //Мах размер карты по X
int yMax=20;             //Мах размер карты по Y
char map[15][20];        //двумерный массив карты
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
char map2[15][20];       //Теневая карта
int free=0;         //свободный слот, для массивов
 
//Иницилизация матрицы карты
for (int i = 0; i< xMax; i++)      //Строки
{
    for (int j = 0; j< yMax; j++)  //столбцы
    {
        map[i][j] = ' ';         //То, чем карта заполняется
        map2[i][j] =' ';
    }
}
 
map[1][5]=voda;    map2[1][5]=voda;
map[1][6]=voda;    map2[1][6]=voda;
map[1][7]=voda;    map2[1][7]=voda;
map[1][8]=voda;    map2[1][8]=voda;
 
map[0][0]=hero;  //Установка на карте нашего персонажа
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < xMax; i++)
    {
        for (int j = 0; j < yMax; j++)
        {
            cout << map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                map[x][y] = map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (map[x][y+1]!=voda)
              {
                map[x][y] = map2[x][y];
                y++;
                map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (map[x+1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x++;
                map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (map[x-1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x--;
                map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Rpyla[free]=true;
               if (kyda=='_')
               {
                 map[x+1][y]=pyla;
                 xPyla[free]=x+1;
                 yPyla[free]=y;
                 Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     map[x-1][y]=pyla;
                     xPyla[free]=x-1;
                     yPyla[free]=y;
                     Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         map[x][y+1]=pyla;
                         yPyla[free]=y+1;
                         xPyla[free]=x;
                         Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         map[x][y-1]=pyla;
                         yPyla[free]=y-1;
                         xPyla[free]=x;
                         Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
             LetitPyla();
        break;
    }
}
_getch();
return 0;
}



Я одного непойму, что вы все так придираетесь, к Глобалкам???
Есть одна замечательная игра: Warcraft 3, и там есть редактор карт, и там встроеный свой язык "Jass", и в нем спокойно "обитают" Глобальные переменные, и локальные переменные,(которые надо: local integer i=2 .... i=null) Почему, данная "примитивная игра", спокойно их использует, (да и думаю, многие игры, включая MMORPG, НЕ могут обойтись без Глобалок!)
Вложения
Тип файла: rar Tanciki.rar (285.4 Кб, 3 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru