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

Змейка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программа рождает программу? http://www.cyberforum.ru/cpp-beginners/thread917986.html
Добрый день, вот такой вопрос: Возможно ли, чтобы программа в результате своих алгоритмов писала новые строки программного кода, а затем сама же по ним работала? Либо изменяла свой собственный код
C++ Как, при разнесении программы на части, в С++, сделать так, чтобы подключаемый файл заметил компилятор? думаю, всё ясно из темы :) Добавлено через 47 секунд Т.е. куда помещать подключаемый файл? http://www.cyberforum.ru/cpp-beginners/thread917979.html
Не пойму где ошибка C++
#include <iostream> using namespace std; int main() { setlocale(0, ""); double a, b; char f; a = 0; f = "+"; cout << "Ваше число = " << a << endl;
C++ графы. поиск в ширину
у меня такая задача: Определить, является ли неориентированный граф двудольным графом через алгоритм поиска в ширину. мне хотя бы алгоритм поиска в ширину подскажите, пожалуйста
C++ Какое число вернет foo(5)? http://www.cyberforum.ru/cpp-beginners/thread917940.html
int foo (int n) { if (n <= 0) return 0; return foo (n - 2) + foo (n / 2) + 1; } Вставляю код, выполняю с нужным параметром и все хорошо, ответ найден и равен 6. Но на тесте вместо компилятора будет листочек и ручка. Подскажите пожалуйста, как это вообще можно посчитать вручную? Или как удобней всего будет изобразить это на бумаге, чтобы не запутаться, а то уже несколько раз...
C++ Итераторы, как параметры лябда-функций в шаблонном классе Доброго здоровья! Есть такой код (упрощенный вариант для наглядного описания ситуации): template<typename Type> struct A { std::function<Type(typename std::vector<Type>::iterator)> f1 = (typename std::vector<Type>::iterator arg) { подробнее

Показать сообщение отдельно
Chamenur
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 10

Змейка - C++

05.07.2013, 07:06. Просмотров 538. Ответов 6
Метки (Все метки)

Решил написать собственный аналог змейки. Создал костяк программы, и у меня возникло три вопроса.
1. Змейка отказывается двигаться влево(нажат CapsLock и раскладка английская, при других параметрах все ОК).
2. Как сделать управление с помощью клавиш?(+Page Up, Page Down, Home, End)
3. Экран сильно мерцает при передвижении змейки. Возможно из-за system("cls"). Можно ли изменять положение змейки как-нибудь по другому.
Собственно, сам код:
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
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
 
int main() 
{   
   CONSOLE_CURSOR_INFO CCI;
   CCI.bVisible=false;
   CCI.dwSize=1;
   SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CCI);
   
   int m1=15, n1=5,
       m2=16, n2=5,
       m3=17, n3=5,
       m4=18, n4=5;
   char floor[24][48];
   for (int i=0; i<24; i++)
         for (int j=0; j<48; j++)
            floor[i][j]=' ';
   for (int i=0; i<24; i++)
   {
      floor[i][0]=178;
      floor[i][46]=178;
   }
   for (int i=0; i<48; i++)
   {
      floor[0][i]=178;
      floor[23][i]=178;
   }
   floor[m1][n1]=219;
   floor[m2][n2]=219;
   floor[m3][n3]=219;
   floor[m4][n4]=219;
   floor[5][5]='*';
   char a=0;
   
   while (a!=VK_SPACE)
   {
      for (int i=0; i<24; i++)
      {
         for (int j=0; j<47; j++)
            cout << floor[i][j];
         cout << endl;
      }
      a=getch();
      switch(a)
      {
         //Вверх
         case 119:
         case 87:
         case 150:
         case 230:
            if (floor[m1-1][n1]!=' ' || m1-1<0)
               break;
            else
            {
               floor[m4][n4]=' ';
               n4=n3;
               n3=n2;
               n2=n1;
               m4=m3;
               m3=m2;
               m2=m1;
               m1--;
               break;
            }
         //Вниз
         case 83:
         case 115:
         case 235:
         case 155:
            if (floor[m1+1][n1]!=' ' || m1+1>23)
               break;
            else
               {
                  floor[m4][n4]=' ';
                  m4=m3;
                  m3=m2;
                  m2=m1;
                  n4=n3;
                  n3=n2;
                  n2=n1;
                  m1++;
                  break;
               }
         //Влево
         case 65:
         case 97:
         case 228:
         case 48:
            if (floor[m1][n1-1]!=' ' || n1-1<0)
               break;
            else
               {
                  floor[m4][n4]=' ';
                  n4=n3;
                  n3=n2;
                  n2=n1;
                  m4=m3;
                  m3=m2;
                  m2=m1;
                  n1--;
                  break;
               }
         //Вправо
         case 68:
         case 100:
         case 130:
         case 162:
            if (floor[m1][n1+1]!=' ' || n1+1>47)
               break;
            else
               {
                  floor[m4][n4]=' ';
                  n4=n3;
                  n3=n2;
                  n2=n1;
                  m4=m3;
                  m3=m2;
                  m2=m1;
                  n1++;
                  break;
               }
         default:
            break;
      }  
      floor[m1][n1]=219;
      floor[m2][n2]=219;
      floor[m3][n3]=219;
      floor[m4][n4]=219; 
      system ("cls");
   }
   system ("pause");
    return 0;
}
Заранее, спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru