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

По графике (нарисовать игровое поле из массива) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Aziz_05
 Аватар для Aziz_05
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 24
27.06.2013, 10:47     По графике (нарисовать игровое поле из массива) #1
как нарисовать игровое поле из массива?
C++
1
2
3
4
5
6
a[5][5]={
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,1,0,1},
{1,0,0,0,1},
{1,1,1,1,1},
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 10:47     По графике (нарисовать игровое поле из массива)
Посмотрите здесь:

Напишите функцию, упорядочивающую элементы массива по сумме первого и второго поля, которая записывается в третье поле, в порядке возрастания C++
Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах C++
Написать программу с родовым классом у которого есть поле двумерного массива... C++
Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) C++
C++ Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 768
Регистрация: 27.09.2012
Сообщений: 16,846
Записей в блоге: 2
Завершенные тесты: 1
27.06.2013, 10:58     По графике (нарисовать игровое поле из массива) #2
Смотря с помощью чего и как рисовать
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
27.06.2013, 11:02     По графике (нарисовать игровое поле из массива) #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Смотря с помощью чего и как рисовать
Еще есть метод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
a[5][5]={
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,1,0,1},
{1,0,0,0,1},
{1,1,1,1,1};
 
for(int i=0; i<5; i++)
  {
  for(int j=0; j<5; j++)
    cout << a[i][j] << endl;
  cout << endl;
  }
Aziz_05
 Аватар для Aziz_05
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 24
27.06.2013, 11:32  [ТС]     По графике (нарисовать игровое поле из массива) #4
я создал игру лабиринт и у меня такие проблемы: каждый раз рисует новое поле и оно состоит из цифр как сделать чтобы было нормальное поле и фигура по нему двигалась
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
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
 char ch2 = 15;
 int s=4;
 int x=7;
 int y=1;
 int g=8;
 char ch1 = 35;
 int z, b;
int a[15][15]=
   {
     {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9},
     {9,0,0,0,0,0,9,s,9,0,0,0,0,0,9},
     {9,0,9,0,9,0,0,0,0,0,9,0,9,0,9},
     {9,0,9,0,9,9,9,9,9,9,9,0,9,0,9},
     {9,0,9,0,0,0,0,9,0,0,0,0,9,0,9},
     {9,0,9,9,9,9,0,0,0,9,9,9,9,0,9},
     {9,0,0,0,0,9,9,0,9,9,0,0,0,0,9},
     {9,0,9,9,0,0,0,0,0,0,0,9,0,9,9},
     {9,0,9,9,9,9,9,0,9,9,9,9,0,9,9},
     {9,0,9,5,0,0,9,0,0,0,0,0,0,0,9},
     {9,0,9,9,9,0,9,0,9,9,9,9,9,0,9},
     {9,0,0,0,0,0,9,0,9,0,0,0,0,0,9},
     {9,9,9,9,0,9,9,0,9,0,9,9,9,0,9},
     {5,0,0,0,0,9,0,0,0,0,0,0,9,0,9},
     {9,9,9,9,8,9,9,5,9,9,9,5,9,5,9},
    } ;
  while ( z =='\r' );
  {
 do
 {
  b = getche();
 
  if( b == 'w' )
   {
    a[y][x]=0;a[4][4]=g;
    y--;
    if(a[y][x]<9){if (a[y][x]==5){a[y][x]=5; y=1; x=7; a[y][x]=s;}else{
    a[y][x]=s;}}
    else{a[y][x]=9; y++; a[y][x]=s;}
  }
 
   if( b == 'a' )
      {
    a[y][x]=0;a[4][4]=g;
    x--;
        if(a[y][x]<9){if (a[y][x]==5){a[y][x]=5; y=1; x=7; a[y][x]=s;}else{
    a[y][x]=s;}}
    else{a[y][x]=9; x++; a[y][x]=s;}
   }
   if( b == 's' )
      {
    a[y][x]=0;a[4][4]=g;
    y++;
        if(a[y][x]<9){if (a[y][x]==5){a[y][x]=5; y=1; x=7; a[y][x]=s;}else{
    a[y][x]=s;}}
    else{a[y][x]=9; y--; a[y][x]=s;}
   }
   if( b == 'd' ){
    a[y][x]=0;a[4][4]=g;
    x++;
        if(a[y][x]<9){if (a[y][x]==5){a[y][x]=5; y=1; x=7; a[y][x]=s;}else{
    a[y][x]=s;}}
    else{a[y][x]=9; x--; a[y][x]=s;}
      }
cout<<"\n"<<a[0][0]<<a[0][1]<<a[0][2]<<a[0][3]<<a[0][4]<<a[0][5]<<a[0][6]<<a[0][7]<<a[0][8]<<a[0][9]<<a[0][10]<<a[0][11]<<a[0][12]<<a[0][13]<<a[0][14]<<"\n"
 <<a[1][0]<<a[1][1]<<a[1][2]<<a[1][3]<<a[1][4]<<a[1][5]<<a[1][6]<<a[1][7]<<a[1][8]<<a[1][9]<<a[1][10]<<a[1][11]<<a[1][12]<<a[1][13]<<a[1][14]<<"\n"
 <<a[2][0]<<a[2][1]<<a[2][2]<<a[2][3]<<a[2][4]<<a[2][5]<<a[2][6]<<a[2][7]<<a[2][8]<<a[2][9]<<a[2][10]<<a[2][11]<<a[2][12]<<a[2][13]<<a[2][14]<<"\n"
 <<a[3][0]<<a[3][1]<<a[3][2]<<a[3][3]<<a[3][4]<<a[3][5]<<a[3][6]<<a[3][7]<<a[3][8]<<a[3][9]<<a[3][10]<<a[3][11]<<a[3][12]<<a[3][13]<<a[3][14]<<"\n"
 <<a[4][0]<<a[4][1]<<a[4][2]<<a[4][3]<<a[4][4]<<a[4][5]<<a[4][6]<<a[4][7]<<a[4][8]<<a[4][9]<<a[4][10]<<a[4][11]<<a[4][12]<<a[4][13]<<a[4][14]<<"\n"
 <<a[5][0]<<a[5][1]<<a[5][2]<<a[5][3]<<a[5][4]<<a[5][5]<<a[5][6]<<a[5][7]<<a[5][8]<<a[5][9]<<a[5][10]<<a[5][11]<<a[5][12]<<a[5][13]<<a[5][14]<<"\n"
 <<a[6][0]<<a[6][1]<<a[6][2]<<a[6][3]<<a[6][4]<<a[6][5]<<a[6][6]<<a[6][7]<<a[6][8]<<a[6][9]<<a[6][10]<<a[6][11]<<a[6][12]<<a[6][13]<<a[6][14]<<"\n"
 <<a[7][0]<<a[7][1]<<a[7][2]<<a[7][3]<<a[7][4]<<a[7][5]<<a[7][6]<<a[7][7]<<a[7][8]<<a[7][9]<<a[7][10]<<a[7][11]<<a[7][12]<<a[7][13]<<a[7][14]<<"\n"
 <<a[8][0]<<a[8][1]<<a[8][2]<<a[8][3]<<a[8][4]<<a[8][5]<<a[8][6]<<a[8][7]<<a[8][8]<<a[8][9]<<a[8][10]<<a[8][11]<<a[8][12]<<a[8][13]<<a[8][14]<<"\n"
 <<a[9][0]<<a[9][1]<<a[9][2]<<a[9][3]<<a[9][4]<<a[9][5]<<a[9][6]<<a[9][7]<<a[9][8]<<a[9][9]<<a[9][10]<<a[9][11]<<a[9][12]<<a[9][13]<<a[9][14]<<"\n"
 <<a[10][0]<<a[10][1]<<a[10][2]<<a[10][3]<<a[10][4]<<a[10][5]<<a[10][6]<<a[10][7]<<a[10][8]<<a[10][9]<<a[10][10]<<a[10][11]<<a[10][12]<<a[10][13]<<a[10][14]<<"\n"
 <<a[11][0]<<a[11][1]<<a[11][2]<<a[11][3]<<a[11][4]<<a[11][5]<<a[11][6]<<a[11][7]<<a[11][8]<<a[11][9]<<a[11][10]<<a[11][11]<<a[11][12]<<a[11][13]<<a[11][14]<<"\n"
 <<a[12][0]<<a[12][1]<<a[12][2]<<a[12][3]<<a[12][4]<<a[12][5]<<a[12][6]<<a[12][7]<<a[12][8]<<a[12][9]<<a[12][10]<<a[12][11]<<a[12][12]<<a[12][13]<<a[12][14]<<"\n"
 <<a[13][0]<<a[13][1]<<a[13][2]<<a[13][3]<<a[13][4]<<a[13][5]<<a[13][6]<<a[13][7]<<a[13][8]<<a[13][9]<<a[13][10]<<a[13][11]<<a[13][12]<<a[13][13]<<a[13][14]<<"\n"
 <<a[14][0]<<a[14][1]<<a[14][2]<<a[14][3]<<a[14][4]<<a[14][5]<<a[14][6]<<a[14][7]<<a[14][8]<<a[14][9]<<a[14][10]<<a[14][11]<<a[14][12]<<a[14][13]<<a[14][14]<<"\n"
 <<endl;
 
 
    }
 
 while ( s != a[14][4] );
 
cout<<"vi vigrali"<<endl;
  z = getche();
  }
  return 0;
}
Issues
27.06.2013, 11:50
  #5

Не по теме:

Цитата Сообщение от Aziz_05 Посмотреть сообщение
cout<<"\n"<<a[0][0]<<a[0][1]<<a[0][2]<<a[0][3]<<a[0][4]<<a[0][5]<<a[0][6]<<a[0][7]<<a[0][8]<<a[0][9]<<a[0][10]<<a[0][11]<<a[0][12]<<a[0][13]<<a[0][14]<<"\n"
*<<a[1][0]<<a[1][1]<<a[1][2]<<a[1][3]<<a[1][4]<<a[1][5]<<a[1][6]<<a[1][7]<<a[1][8]<<a[1][9]<<a[1][10]<<a[1][11]<<a[1][12]<<a[1][13]<<a[1][14]<<"\n"
*<<a[2][0]<<a[2][1]<<a[2][2]<<a[2][3]<<a[2][4]<<a[2][5]<<a[2][6]<<a[2][7]<<a[2][8]<<a[2][9]<<a[2][10]<<a[2][11]<<a[2][12]<<a[2][13]<<a[2][14]<<"\n"
*<<a[3][0]<<a[3][1]<<a[3][2]<<a[3][3]<<a[3][4]<<a[3][5]<<a[3][6]<<a[3][7]<<a[3][8]<<a[3][9]<<a[3][10]<<a[3][11]<<a[3][12]<<a[3][13]<<a[3][14]<<"\n"
*<<a[4][0]<<a[4][1]<<a[4][2]<<a[4][3]<<a[4][4]<<a[4][5]<<a[4][6]<<a[4][7]<<a[4][8]<<a[4][9]<<a[4][10]<<a[4][11]<<a[4][12]<<a[4][13]<<a[4][14]<<"\n"
*<<a[5][0]<<a[5][1]<<a[5][2]<<a[5][3]<<a[5][4]<<a[5][5]<<a[5][6]<<a[5][7]<<a[5][8]<<a[5][9]<<a[5][10]<<a[5][11]<<a[5][12]<<a[5][13]<<a[5][14]<<"\n"
*<<a[6][0]<<a[6][1]<<a[6][2]<<a[6][3]<<a[6][4]<<a[6][5]<<a[6][6]<<a[6][7]<<a[6][8]<<a[6][9]<<a[6][10]<<a[6][11]<<a[6][12]<<a[6][13]<<a[6][14]<<"\n"
*<<a[7][0]<<a[7][1]<<a[7][2]<<a[7][3]<<a[7][4]<<a[7][5]<<a[7][6]<<a[7][7]<<a[7][8]<<a[7][9]<<a[7][10]<<a[7][11]<<a[7][12]<<a[7][13]<<a[7][14]<<"\n"
*<<a[8][0]<<a[8][1]<<a[8][2]<<a[8][3]<<a[8][4]<<a[8][5]<<a[8][6]<<a[8][7]<<a[8][8]<<a[8][9]<<a[8][10]<<a[8][11]<<a[8][12]<<a[8][13]<<a[8][14]<<"\n"
*<<a[9][0]<<a[9][1]<<a[9][2]<<a[9][3]<<a[9][4]<<a[9][5]<<a[9][6]<<a[9][7]<<a[9][8]<<a[9][9]<<a[9][10]<<a[9][11]<<a[9][12]<<a[9][13]<<a[9][14]<<"\n"
*<<a[10][0]<<a[10][1]<<a[10][2]<<a[10][3]<<a[10][4]<<a[10][5]<<a[10][6]<<a[10][7]<<a[10][8]<<a[10][9]<<a[10][10]<<a[10][11]<<a[10][12]<<a[10][13]<<a[10][14]<<"\n"
*<<a[11][0]<<a[11][1]<<a[11][2]<<a[11][3]<<a[11][4]<<a[11][5]<<a[11][6]<<a[11][7]<<a[11][8]<<a[11][9]<<a[11][10]<<a[11][11]<<a[11][12]<<a[11][13]<<a[11][14]<<"\n"
*<<a[12][0]<<a[12][1]<<a[12][2]<<a[12][3]<<a[12][4]<<a[12][5]<<a[12][6]<<a[12][7]<<a[12][8]<<a[12][9]<<a[12][10]<<a[12][11]<<a[12][12]<<a[12][13]<<a[12][14]<<"\n"
*<<a[13][0]<<a[13][1]<<a[13][2]<<a[13][3]<<a[13][4]<<a[13][5]<<a[13][6]<<a[13][7]<<a[13][8]<<a[13][9]<<a[13][10]<<a[13][11]<<a[13][12]<<a[13][13]<<a[13][14]<<"\n"
*<<a[14][0]<<a[14][1]<<a[14][2]<<a[14][3]<<a[14][4]<<a[14][5]<<a[14][6]<<a[14][7]<<a[14][8]<<a[14][9]<<a[14][10]<<a[14][11]<<a[14][12]<<a[14][13]<<a[14][14]<<"\n"
*<<endl;

Croessmah
27.06.2013, 12:13
  #6

Не по теме:

@SeregaC++, Никаких циклов, только хардкор

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
27.06.2013, 12:24     По графике (нарисовать игровое поле из массива) #7
Ага! Что-то мне припоминается. Все таки решили сделать как положено. Похвально.

Тогда начнем:
Для начала все используемые так сказать магические числа надо переписать в виде переменных. Поясню: к примеру размеры поля 15х15. И все циклы обхода этого поля будут соответственно до 15. А вдруг вы захотите изменить его размер? Что тогда? Просматривать весь код на наличие цифры 15 и при встрече заменять ее на новую? Это минимум долго. А так же есть большой риск заменить какую-то не ту цифру 15, не относящуюся к размеру поля, что приведет к трудноуловимым сбоям в работе программы. Лучше в начале программы объявить переменные, отвечающие за размер поля и везде в коде подставлять имена этих переменных. Таким образом, при изменении размеров поля, вам придется изменить 15 только в одном месте.
То есть:
C++
1
int a[15][15]={...
Заменится на
C++
1
2
int Height = 15, Width = 15;
int a[Height][Width]={...
Дальше, в том же ключе, можно заменить ваши спецсимволы, отображающие в массиве пол (0), стены (9), какие-либо переходы (8) и прочее (5), так же на имена переменных. И, если вы вдруг, по каким-то причинам захотите поменять местами стены и пол, то вам достаточно будет поменять всего две переменные, а не перерисовывать целый массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int w/*стена*/=9;
int f/*пол*/=0;
int e/*переход*/=8;
int o/*предмет*/=5;
int a[Height][Width]=
   {
     {w,w,w,w,w,w,w,w,w,w,w,w,w,w,w},
     {w,f,f,f,f,f,w,s,w,f,f,f,f,f,w},
     {w,f,w,f,w,f,f,f,f,f,w,f,w,f,w},
     {w,f,w,f,w,w,w,w,w,w,w,f,w,f,w},
     {w,f,w,f,f,f,f,w,f,f,f,f,w,f,w},
     {w,f,w,w,w,w,f,f,f,w,w,w,w,f,w},
     {w,f,f,f,f,w,w,f,w,w,f,f,f,f,w},
     {w,f,w,w,f,f,f,f,f,f,f,w,f,w,w},
     {w,f,w,w,w,w,w,f,w,w,w,w,f,w,w},
     {w,f,w,o,f,f,w,f,f,f,f,f,f,f,w},
     {w,f,w,w,w,f,w,f,w,w,w,w,w,f,w},
     {w,f,f,f,f,f,w,f,w,f,f,f,f,f,w},
     {w,w,w,w,f,w,w,f,w,f,w,w,w,f,w},
     {o,f,f,f,f,w,f,f,f,f,f,f,w,f,w},
     {w,w,w,w,e,w,w,o,w,w,w,o,w,o,w},
    } ;
Может не очень наглядно и вообще сто лет не нужно, но зато с програмной точки зрения лучше. Хотя можно пойти от обратного и объявить клетки так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int a[Height][Width]=
   {
     {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9},
     {9,0,0,0,0,0,9,s,9,0,0,0,0,0,9},
     {9,0,9,0,9,0,0,0,0,0,9,0,9,0,9},
     {9,0,9,0,9,9,9,9,9,9,9,0,9,0,9},
     {9,0,9,0,0,0,0,9,0,0,0,0,9,0,9},
     {9,0,9,9,9,9,0,0,0,9,9,9,9,0,9},
     {9,0,0,0,0,9,9,0,9,9,0,0,0,0,9},
     {9,0,9,9,0,0,0,0,0,0,0,9,0,9,9},
     {9,0,9,9,9,9,9,0,9,9,9,9,0,9,9},
     {9,0,9,5,0,0,9,0,0,0,0,0,0,0,9},
     {9,0,9,9,9,0,9,0,9,9,9,9,9,0,9},
     {9,0,0,0,0,0,9,0,9,0,0,0,0,0,9},
     {9,9,9,9,0,9,9,0,9,0,9,9,9,0,9},
     {5,0,0,0,0,9,0,0,0,0,0,0,9,0,9},
     {9,9,9,9,8,9,9,5,9,9,9,5,9,5,9},
    } ;
 
int w/*стена*/=9;
int f/*пол*/=0;
int e/*переход*/=8;
int o/*предмет*/=5;



Следующее важное замечание - обзывайте переменные как-нибудь осмысленно. Кто такие
C++
1
2
3
4
5
6
7
8
 char ch2 = 15;
 int s=4;
 int x=7;
 int y=1;
 int g=8;
 char ch1 = 35;
 int z, b;
int a[15][15]
? Да черт его знает! И если вдруг вы в коде встретите запись вида
C++
1
2
3
...
if(x/2>y) g=y-s*2;
...
у вас лопнет мозг.
Таким образом условие выхода
C++
1
while ( s != a[14][4] );
преобразуется во что-то наподобие
C++
1
2
3
int exitCell = e; // Где е==8
...
while ( s != exitCell );
Таким образом вы можете запихать сколько угодно выходов в ваш массив и все это будет обрабатывать одна компактная строчка. А не громозяка вида
C++
1
while ( s != a[14][4] || s != a[4][1] || s != a[2][7] || s != a[9][8] || s != a[1][4] || s != a[1][5] || s != a[5][42]);
Да и имя массива клеток поля a[Height][Width] хорошо бы было заменить на какой-нибудь field или labyrinth.



P.S. Надеюсь не нужно потом будет прикручивать к вашей программе алгоритм поиска пути?
P.P.S. Надеюсь вы действительно хотите написать эту программу, а не болтаете ерундой.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 768
Регистрация: 27.09.2012
Сообщений: 16,846
Записей в блоге: 2
Завершенные тесты: 1
27.06.2013, 14:23     По графике (нарисовать игровое поле из массива) #8
@SatanaXIII, Размер массива должен быть константой:
C++
1
const int Height = .........
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
27.06.2013, 14:29     По графике (нарисовать игровое поле из массива) #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Размер массива должен быть константой
Конечно. Само собой. Заговорился.
C++
1
#define Height 15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 10:01     По графике (нарисовать игровое поле из массива)
Еще ссылки по теме:

Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? C++
Реализовать игровое поле в игре "Тетрис" C++
C++ Массив внутри класса (игровое поле)

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

Или воспользуйтесь поиском по форуму:
Aziz_05
 Аватар для Aziz_05
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 24
06.07.2013, 10:01  [ТС]     По графике (нарисовать игровое поле из массива) #10
а как нарисовать поле с помошю graphics.h?
Yandex
Объявления
06.07.2013, 10:01     По графике (нарисовать игровое поле из массива)
Ответ Создать тему
Опции темы

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