Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Задача C++ написать в DEV_cpp 1Работа с цифрами в числе Вводится последовательность из N целых чисел. Определить количество одинаковых рядом стоящих чисел. Thanks !!! #include<iostream> using namespace std; const int N = 6; int main() { setlocale(LC_ALL,"rus"); int n, count = 0; int mass; https://www.cyberforum.ru/ cpp-beginners/ thread989358.html C++ Запись вектора в файл и его чтение https://www.cyberforum.ru/ cpp-beginners/ thread989370.html
Здравствуйте. Возникла такая проблема: У меня есть свой класс class CType { public: CType () {is_empty=true; is_show=false; visible=true;} AnsiString type_var; AnsiString...
C++ Нужна программка
Надо создать в динамической памяти матрицу и определить в ней все строки и столбцы, в которых встречаются одинаковые элементы. Помогите пожалуйста, а то я в этом совсем ничего не понимаю.
C++ Не могу найти ошибку Доброго времени суток, вообщем такое задание: В одномерном массиве,состоящем из n вещественных элементов вычислить: 1. Произведение положительных элементов массива; 2.Сумму элементов массива,... 2й пункт можно сделать еще так небольшие изменения в вашем коде int min = 0; // минимальный элемент массива for (i=1; i<ArrSize; i++) if (arr < arr) min = i; ... https://www.cyberforum.ru/ cpp-beginners/ thread989349.html
C++ стеки и робота с ними https://www.cyberforum.ru/ cpp-beginners/ thread989381.html
Даны текстовый файл, содержащий числовую информацию. Выберите из него числа и занесите в очередь. Выведите содержимое очереди на экран и посчитайте количество положительных чисел.
C++ Найти наибольший общий делитель n и m [Qt 5] https://www.cyberforum.ru/ cpp-beginners/ thread989401.html
Здравствуйте. Не могли бы помочь? Если можно, не очень сложный код, чтобы понятно было. Код надо написать в программе Qt5 Заранее спасибо)
C++ Разделить строки на две части В задаче сказано: Дано текстовый файл. В каждой строке информация про игрушки (название и цена) которые записаны через пробел. Вывести окончательную информацию про игрушки по возрастанию цены, а... https://www.cyberforum.ru/ cpp-beginners/ thread989366.html C++ Есть сайт. как сделать из него чтение? Есть файл txt с открытым доступом в сети. как сделать из него чтение? ну например первой строки или первого слова. https://www.cyberforum.ru/ cpp-beginners/ thread989388.html
C++ Как переделать код что б там были указатели ! https://www.cyberforum.ru/ cpp-beginners/ thread989376.html
#include <iostream> #include <conio.h> #include <iomanip> #include <math.h> using namespace std; void Display (int A,int m,int n); void Sum(int A,int m,int n); Заменить void Display (int A,int m,int n); void Sum(int A,int m,int n); На void Display (int **A,int m,int n); void Sum(int **A,int m,int n); А так же, заменить int A;На int **A = new int* ;...
C++ dllimport
хотелось бы уточнить кое-какую информацию относительно использования dll в с++ вики учебник предлагает 2 варианта импорта dll функций 1) с использованием .lib .obj и прочих "файлов" #include... Если я не ошибаюсь, то можно создать библиотеку импорта из DLL. Копай в сторону "create dll import library"
C++ Решение задачки
Привет всем. Помогите или намекните, как решить данную задачку. В предыдущем задании записал файл из 40 значений, вот вторая часть: " Вычислить сумму элементов массива, расположенных между... Запоминать значения можно? Если да: считываешь в массив все значения. Идешь от начала - находишь первый отрицательный, запоминаешь позицию. Идешь с конца - находишь первый отрицательный - запоминаешь...
C++ Ссылка на неразрешенную лексему при работе с шаблоном Никак не могу понять с чем связанна эта ошибка error LNK2028: ссылка на неразрешенную лексему (0A0003B6) "void __cdecl Connect<class Element,class F,void (__thiscall F::*)(void)>(class Element... реализация шаблона должна быть в хедере https://www.cyberforum.ru/ cpp-beginners/ thread989347.html
CEO SOVAZ Corp.
 Аватар для sovaz1997
386 / 232 / 51
Регистрация: 17.12.2011
Сообщений: 822
Записей в блоге: 1
27.10.2013, 14:35 0

Змейка (SNake) - C++ - Ответ 5243477

27.10.2013, 14:35. Показов 2023. Ответов 7
Метки (Все метки)

Ответ

У меня есть код змейки (когда-то писал). Не C++ (Синтаксис похож). Это Processing. Если не сложно, попробуй найти ф-ию увеличения и движения змейки. Попробуй вставь ее к себе в код)
Java
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
229
230
231
232
233
234
235
236
237
238
239
240
241
int widthScreen = 1000;
int heightScreen = 1000;
 
int widthCell = 20;
int heightCell = 20;
 
int snakeVX = 0;
int snakeVY = 0;
 
int standartSpeedX = widthCell;
int standartSpeedY = heightCell;
 
int die = 0;
 
int toolBarHeight = 5 * heightCell;
 
int value = 1;
 
color poleColor = color(255);
 
int setkaVariantX = 120;
int setkaVariantY = 5;
int sizeSetkaVariantX = 10;
int sizeSetkaVariantY = 10;
 
int bonusMestoX = (int)random( widthScreen / widthCell ) * widthCell;
int bonusMestoY = (int)random( heightScreen / heightCell - toolBarHeight / heightCell ) * heightCell + toolBarHeight;
 
Cell[][] pole = new Cell[widthScreen / widthCell][heightScreen / heightCell];
Cell bonus = new Cell( bonusMestoX, bonusMestoY, widthCell, heightCell, color(random(255), random(255), random(255)), 0, 0 );
 
Snake mySnake = new Snake(widthCell, heightCell, standartSpeedX, standartSpeedY);
 
class Cell {
  int x;
  int y;
  int width1;
  int height1;
  int vx;
  int vy;
 
  color c;
 
  Cell() {}
  Cell( int x_, int y_, int width1_, int height1_, color c_, int vx_, int vy_ ) {
    x = x_;
    y = y_;
    width1 = width1_;
    height1 = height1_;
    c = c_;
    vx = vx_;
    vy = vy_;
  }
  
  void paint() {
    fill(c);
    stroke(c);
    rect(x, y, width1, height1 );
  }
  void newBonus() {
    x = (int)random( widthScreen / widthCell ) * widthCell;
    y = (int)random( heightScreen / heightCell - toolBarHeight / heightCell ) * heightCell + toolBarHeight;
    c = color(random(255), random(255), random(255));
  }
};
 
class Snake {
  int lengthMax = 1000;
  int length_ = 1;
  Cell[] cellArray = new Cell[lengthMax];
  int[] vx = new int[lengthMax];
  int[] vy = new int[lengthMax];
  color[] c = new int[lengthMax];
  int widthSnake;
  int heightSnake;
  Snake( int widthSnake_, int heightSnake_, int speedSnakeX_, int speedSnakeY_ ) {
    c[0] = bonus.c;
    cellArray[0] = new Cell();
    cellArray[0].x = (int)random(widthCell) * widthCell;
    cellArray[0].y = (int)random(heightCell) * heightCell + toolBarHeight;
    widthSnake = widthSnake_;
    heightSnake = heightSnake_;
    
  }
 
  void paint() {
    for( int i = 0; i < length_; ++i ) {
      stroke(c[i]);
      fill(c[i]);
      rect(cellArray[i].x, cellArray[i].y, widthSnake, heightSnake );
    }
  }
 
  void move() {
    for( int i = length_ - 1; i > 0; --i ) {
      cellArray[i].x = cellArray[i - 1].x;
      cellArray[i].y = cellArray[i - 1].y;      
    }   
    cellArray[0].x += vx[0];
    cellArray[0].y += vy[0];
    for( int i = 0; i < length_; ++i ) {
      if( cellArray[i].x > widthScreen ) {
        cellArray[i].x = 0;
      }
      if( cellArray[i].x < 0 ) {
        cellArray[i].x = widthScreen;
      }
      if( cellArray[i].y > heightScreen ) {
        cellArray[i].y = toolBarHeight;
      }
      if( cellArray[i].y < toolBarHeight ) {
        cellArray[i].y = heightScreen;
      }
    }
  }
 
  void snakePlus() {
    ++length_;
    cellArray[length_ - 1] = new Cell();
    for( int i = length_ - 1; i > 0; --i ) {
      cellArray[i].x = cellArray[i - 1].x;
      cellArray[i].y = cellArray[i - 1].y;
      c[i] = c[i - 1];      
    }
    cellArray[0].x = getNextX();
    cellArray[0].y = getNextY();
    c[0] = color(bonus.c);
  }
 
  int getNextX() {
    return cellArray[0].x + vx[0];
  }
  int getNextY() {
    return cellArray[0].y + vy[0];
  }
 
};
 
void setup() {
  frameRate(30);
  size( widthScreen, heightScreen );
  for( int i = 0; i <  widthScreen / widthCell; ++i ) {
    for( int j = 0; j < heightScreen / heightCell; ++j ) {
      pole[i][j] = new Cell( i * widthCell, j * heightCell, widthCell, heightCell, poleColor, 0, 0 );
    }
  }
}
 
void draw() {
  background( poleColor );
  for( int i = 0; i <  widthScreen / widthCell; ++i ) {
    for( int j = 0; j < heightScreen / heightCell; ++j ) {
      pole[i][j].paint();
    }
  }
  mySnake.paint();
  //if( die != 1 ) {
    mySnake.move();
  //}
  bonus.paint();
  if( collide_with_bonus( mySnake.cellArray[0].x, mySnake.cellArray[0].y, bonus.x, bonus.y ) ) {
    bonus.newBonus();
    mySnake.snakePlus();
  }
  println(mySnake.length_);
  collide();
  fill(200, 200, 200);
  stroke(200, 200, 200);
  rect(0, 0, widthScreen, toolBarHeight);
  stroke(0);
  fill(255);
  if( value == 1 ) {
    line(setkaVariantX + sizeSetkaVariantX / 2, setkaVariantY, setkaVariantX + sizeSetkaVariantX / 2, setkaVariantY + sizeSetkaVariantY);
    line(setkaVariantX, setkaVariantY + sizeSetkaVariantY / 2, setkaVariantX + sizeSetkaVariantX, setkaVariantY + sizeSetkaVariantY / 2 );
  }
  fill(255, 255, 255, 0);
  rect(setkaVariantX, setkaVariantY, sizeSetkaVariantX, sizeSetkaVariantY);
  if(value == 1) {
    for( int i = 0; i < widthScreen; i += widthCell ) {
      line( i, toolBarHeight, i, heightScreen );
    }
    for( int i = toolBarHeight; i < heightScreen; i += heightCell ) {
      line( 0, i,  widthScreen, i );
    }
  }
  fill(0);
  text("сетка(есть/нет)", 15, 15);
}
 
boolean collide_with_bonus( int x1, int y1, int x2, int y2 ) {
  return ( x1 == x2 && y1 == y2 );
}
void keyPressed() {
  if(!( mySnake.vy[0] > 0 && mySnake.vx[0] == 0 )) {
    if(key == 'w') {
      mySnake.vx[0] = 0;
      mySnake.vy[0] = -standartSpeedY;
    }
  }
  if(!( mySnake.vy[0] < 0 && mySnake.vx[0] == 0 )) {
    if(key == 's') {
      mySnake.vx[0] = 0;
      mySnake.vy[0] = standartSpeedY;
    }
  }
  if(!( mySnake.vx[0] > 0 && mySnake.vy[0] == 0 )) {
    if(key == 'a') {
      mySnake.vx[0] = -standartSpeedX;
      mySnake.vy[0] = 0;
    }
  }
  if(!( mySnake.vx[0] < 0 && mySnake.vy[0] == 0 )) {
    if(key == 'd') {
      mySnake.vx[0] = standartSpeedX;
      mySnake.vy[0] = 0;
    }
  }
}
 
void collide() {
  for( int i = 0; i < mySnake.length_; ++i ) {
    for( int j = 0; j < mySnake.length_; ++j ) {
      if( i < j ) { 
        if(mySnake.cellArray[i].x == mySnake.cellArray[j].x && mySnake.cellArray[i].y == mySnake.cellArray[j].y ) { 
           die = 1;
         }
      }
    }
  }
}
 
void mouseClicked() {
  if( (mouseX > setkaVariantX && mouseX < setkaVariantX + sizeSetkaVariantX) && (mouseY > setkaVariantY && mouseY < setkaVariantY + sizeSetkaVariantY) ) {
    if(value == 0) {
      value = 1;
    } 
    else {
      value = 0;
    }
  }
}


Вернуться к обсуждению:
Змейка (SNake) C++
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2013, 14:35
Готовые ответы и решения:

Snake в консоли, подскажите функцию
Ну собственно не понятно как реализовать только один момент. логика примерно следующая: функция ожидает пол секунды, если за это время...

Объясните для чего предназначен каждый метод(игра Snake)
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;vector&gt; using namespace std; int MapW, MapH; char Map...

Идеи алгоритма для решения игры "Snake"
Доброй ночи форумчане, прежде всего спасибо всем модераторам и участникам дискуссий за этот форум, уже около года я черпаю отсюда...

7
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.10.2013, 14:35
Помогаю со студенческими работами здесь

змейка с++
ребят,вот наработки,не могу придумать нормальный алгоритм перемещения змейки,точнее перемещение,когда она будет увеличиваться... ведь ей...

Змейка на C++
Здравствуйте, буквально неделю назад я начала программировать в С++. И многое изначально не понятно, сижу очень долго с самыми...

Змейка в С
Доброй ночи всем. Подскажите пожалуйста как можно написать игру змейку в консольном окне на С? 3аранее спасибо

змейка
Хочу написать игру змейка, как на первых телефонах. не могу придумать классы которые, при этом использовать(свои). Помогите...

Змейка
Решил написать собственный аналог змейки. Создал костяк программы, и у меня возникло три вопроса. 1. Змейка отказывается двигаться...

0
Новые блоги и статьи
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
Выполнение кода в игровом цикле Unity с использованием не-MonoBehaviour классов C#
bytestream 02.03.2025
Обычный подход к разработке игр на Unity тесно связан с использованием MonoBehaviour - базового класса для скриптов, обеспечивающего доступ к игровому циклу через события Update, FixedUpdate и. . .
Управление инстанцирование­м вложенных классов в C#
bytestream 02.03.2025
Вложенные классы в C# - мощное средство для создания тесно связанных типов данных и логики. Такие классы определяются внутри других классов и обеспечивают высокий уровень инкапсуляции, позволяя. . .
Как использовать Batch Transform и Batch Gizmo Drawing API в Unity
bytestream 02.03.2025
В мире разработки игр производительность часто становится краеугольным камнем, особенно когда речь заходит о проектах с большим количеством объектов и сложной визуализацией. Unity предоставляет. . .
Эффективный реверс строк в C#
Wired 01.03.2025
Реверс строки, казалось бы простая операция, на практике может стать испытанием для производительности приложения, особенно когда речь идет о больших объемах данных или критически важных участках. . .
Перегрузка булевых операторов в C#
Wired 01.03.2025
В программировании редко встречаются задачи, требующие перегрузки булевых операторов. Обычно достаточно стандартной реализации для типа bool или использования nullable-типов. Однако существуют. . .
Способы определения момента возникновения события в коде C# Unity
Wired 01.03.2025
Отслеживание событий - важный элемент разработки игр на Unity, позволяющий создавать отзывчивые и интерактивные приложения. Однако стандартные средства Unity не всегда предоставляют оптимальные. . .
Unit-тестирование в Unity
Wired 01.03.2025
Многие разработчики игр считают, что написание тестов отнимает слишком много времени и ресурсов, особенно учитывая частые изменения геймплейной логики и механик. Однако это заблуждение приводит к. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru