Результаты поиска
| |
Matou | Дата: Пятница, 05 Ноября 2010, 21:50 | Сообщение # 1081 | Тема: Создание 2d движка |
Исходный коТ
Сейчас нет на сайте
| Quote (bond95) VCL билдера можно использовать в качестве ГАПИ? В принципе можно, но возможности с OpenGL/DirectX не идут ни в какое сравнение.
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 21:53 |
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 21:42 | Сообщение # 1082 | Тема: Создание 2d движка |
Исходный коТ
Сейчас нет на сайте
| Quote (bond95) я пробовал учить и DirectX и OpenGL, но постоянно когда я пытаюсь скомпилировать примеры компилятор мне выдает ошибку. Очень информативно...
|
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 21:19 | Сообщение # 1083 | Тема: помогите если не очень трудно |
Исходный коТ
Сейчас нет на сайте
| Quote (devil-hunter) 2)создайте программу рисующую на экране два поля для морского боя. Первое - игрока, второе - противника. Второе поле должно располагаться справа от первого. Внутренние клетки заполняйте пробелом. Для рисования границы используйте минус и прямую разделительную черту: -, |, а для углов - решётку #. Слева от каждого поля - стобик цифр; сверху - буквы. Рамки нарисовал, цифры и буквы ставить влом, может сам поймешь как их поставить? Ведь это очень просто. Все коментарии есть в коде. Code #include <iostream> // cin, cout #include <clocale> // поддержка русского языка #include <conio.h> // _getch() #include <stdlib.h> // поддержка функции очистки экрана system("cls")
using namespace std;
char UpperBraket[22]; // Верхняя рамка боевого поля char BotomBraket[22]; // Нижняя рамка боевого поля
// <<<<< Ф-я формирующяя нижнюю и верхнюю рамки, нужна для оформления не более >>>>> void InitBrakets(void) { UpperBraket[0] = '#'; for(int i = 1; i <= 20; ++i) UpperBraket[i] = '-'; UpperBraket[21] = '#'; BotomBraket[22] = '\0';
BotomBraket[0] = '#'; for(int i = 1; i <= 20; ++i) BotomBraket[i] = '-'; BotomBraket[21] = '#'; BotomBraket[22] = '\0'; }
int main() {
setlocale(LC_CTYPE,"Russian"); // установка русского языка
InitBrakets(); // Незабудь скобки проинициализировать
char act; // переменная для хранения ввода пользователя int ch; // ввод пользователя приведённый к типу int int x = 0; // две переменные для хранения координат пользователя int y = 0; char map[15][20]; // двумерный массив для хранения игровой карты
// блок инициализации массива // внешний цикл отвечает за строки for (int i = 0; i< 15; i++) { // внутренний цикл отвечает за столбцы for (int j = 0; j< 20; j++) { map[i][j] = ' '; } }
map[0][0] = 'Т'; // помещаем игровой персонаж в начало координат while (1) { system("cls"); // вызов функции очистки экрана
cout << UpperBraket << '\t' << UpperBraket << endl; // Рисуем верхнюю скобку for (int i = 0; i < 15; i++) { cout << '|'; // рисуем левую боковую рамку for (int j = 0; j < 20; j++) { cout << map[i][j]; // в циклах поэлементно выводится массив } cout << '|' << '\t' << '|' // рисуем остальные << " " << '|' << endl; // боковые рамки } cout << BotomBraket << '\t' << BotomBraket << endl; // Рисуем нижнюю скобку
act = _getch(); ch = static_cast<int>(act);
switch (static_cast<int>(act)) { case -32: break; case 27: exit(0); break; case 75: map[x][y] = ' '; // "Убираем" объект со старой координаты y--; // изменяем координаты // "рисуем" объект на новом месте break; case 77: map[x][y] = ' '; y++; break; case 80: map[x][y] = ' '; x++; break; case 72: map[x][y] = ' '; x--; break; } if(x < 0) x = 0; // проверка if(y < 0) y = 0; // если выходит if(x > 14) x = 14; // за пределы карты if(y > 19) y = 19; // возвращяем на место map[x][y] = 'T'; // Выносим присваивание } // конец цикла while
_getch(); return 0; } Еще один вариант, очень жопоруко и без всяких коментариев но зато можно управлять букавками на обоих полях на правом стрелками, на левом WASD. Code #include <iostream> // cin, cout #include <clocale> // поддержка русского языка #include <conio.h> // _getch() #include <stdlib.h> // поддержка функции очистки экрана system("cls")
using namespace std;
char UpperBraket[22]; // Верхняя рамка боевого поля char BotomBraket[22]; // Нижняя рамка боевого поля
// <<<<< Ф-я формирующяя нижнюю и верхнюю рамки, нужна для оформления не более >>>>> void InitBrakets(void) { UpperBraket[0] = '#'; for(int i = 1; i <= 20; ++i) UpperBraket[i] = '-'; UpperBraket[21] = '#'; BotomBraket[22] = '\0';
BotomBraket[0] = '#'; for(int i = 1; i <= 20; ++i) BotomBraket[i] = '-'; BotomBraket[21] = '#'; BotomBraket[22] = '\0'; }
int main() {
setlocale(LC_CTYPE,"Russian"); // установка русского языка
InitBrakets(); // Незабудь скобки проинициализировать
char act; // переменная для хранения ввода пользователя int ch; // ввод пользователя приведённый к типу int int x1 = 0; // две переменные для хранения координат пользователя int y1 = 0; int x2 = 0; int y2 = 0; char map1[15][20]; // двумерный массив для хранения игровой карты char map2[15][20];
// блок инициализации массива // внешний цикл отвечает за строки for (int i = 0; i< 15; i++) { // внутренний цикл отвечает за столбцы for (int j = 0; j< 20; j++) { map1[i][j] = ' '; map2[i][j] = ' '; } }
map1[0][0] = 'Т'; // помещаем игровой персонаж в начало координат map2[0][0] = 'X'; while (1) { system("cls"); // вызов функции очистки экрана
cout << UpperBraket << '\t' << UpperBraket << endl; // Рисуем верхнюю скобку for (int i = 0; i < 15; i++) { cout << '|'; // рисуем левую боковую рамку for (int j = 0; j < 20; j++) { cout << map1[i][j]; // в циклах поэлементно выводится массив } cout << '|' << '\t' << '|'; for (int j = 0; j < 20; j++) { cout << map2[i][j]; // в циклах поэлементно выводится массив } cout << '|' << endl;
} cout << BotomBraket << '\t' << BotomBraket << endl; // Рисуем нижнюю скобку
act = _getch(); ch = static_cast<int>(act);
switch (static_cast<int>(act)) { case -32: break; case 27: exit(0); break; case 75: map2[x2][y2] = ' '; // "Убираем" объект со старой координаты y2--; // изменяем координаты // "рисуем" объект на новом месте break; case 77: map2[x2][y2] = ' '; y2++; break; case 80: map2[x2][y2] = ' '; x2++; break; case 72: map2[x2][y2] = ' '; x2--; break; case 'w': map1[x1][y1] = ' '; x1--; break; case 's': map1[x1][y1] = ' '; x1++; break; case 'a': map1[x1][y1] = ' '; y1--; break; case 'd': map1[x1][y1] = ' '; y1++; break; } if(x1 < 0) x1 = 0; // проверка if(y1 < 0) y1 = 0; // если выходит if(x1 > 14) x1 = 14; // за пределы карты if(y1 > 19) y1 = 19; // возвращяем на место map1[x1][y1] = 'T'; // Выносим присваивание if(x2 < 0) x2 = 0; // проверка if(y2 < 0) y2 = 0; // если выходит if(x2 > 14) x2 = 14; // за пределы карты if(y2 > 19) y2 = 19; // возвращяем на место map2[x2][y2] = 'X'; } // конец цикла while
_getch(); return 0; }
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 21:39 |
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 20:29 | Сообщение # 1084 | Тема: помогите если не очень трудно |
Исходный коТ
Сейчас нет на сайте
| devil-hunter, Что этот код вообще должен делать? Самхивает на консольный морской бой, только не понятно почему размер массива 15 на 20. 1) Во первых не к чему делать присваивание новых координат после каждоко кейса (case) достаточно сделать это посде свитча(switch), более того если делать так как ты делаешь, то и проверку придется после каждого кейса делать. Правильнее было бы так: Code switch (static_cast<int>(act)) { case -32: break; case 27: exit(0); break; case 75: map[x][y] = ' '; // "Убираем" объект со старой координаты y--; // изменяем координаты // "рисуем" объект на новом месте break; case 77: map[x][y] = ' '; y++; break; case 80: map[x][y] = ' '; x++; break; case 72: map[x][y] = ' '; x--; break; } if(x < 0) x = 0; // проверка if(y < 0) y = 0; // если выходит if(x > 14) x = 14; // за пределы карты if(y > 19) y = 19; // возвращяем на место map[x][y] = 'T'; // Выносим присваивание
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 20:48 |
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 17:38 | Сообщение # 1085 | Тема: Нубский ворпос. |
Исходный коТ
Сейчас нет на сайте
| Fallout, Есть форумы где так делают, но со временем там накапливаются тысячи постов в одной теме и их все равно никто не читает и просто дописывают однообразные вопросы в конце. В общем разницы особо нету никакой, что 100500 тем что 100500 одинаковых постов в одной теме.
|
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 17:32 | Сообщение # 1086 | Тема: Робота с видеокамерой |
Исходный коТ
Сейчас нет на сайте
| А причем сдесь знания С++? Насколько я понимаю тут важнее алгоритм распознавания обьекта и то как движется обьект по отношению к камере.
|
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 14:31 | Сообщение # 1087 | Тема: Помогите решить задачи по С++ |
Исходный коТ
Сейчас нет на сайте
| Задание №7 Code #include <iostream> #include <math.h> #include <string> using namespace std;
int main(int argc, char** argv) { locale::global(locale("rus")); struct RECORD{ string header; // Название детали int quantity; // Коллчичество деталей int shop; // Номер цеха };
cout << "Введите колличество записей о выпущенных деталях: "; int N; cin >> N;
RECORD* details; details = new RECORD[N];
for(int i = 0; i < N; ++i) { cout << "Введите номер цеха: "; cin >> details[i].shop; cout << "Введите название детали: "; cin >> details[i].header; cout << "Введите кол-во деталей выпущенных данным цехом: "; cin >> details[i].quantity; }
for(int i = 0; i < N; ++i) { cout << details[i].header << '\t' << details[i].shop << '\t' << details[i].quantity << endl; }
cout << "Введите номер цеха, для которого высчитывается общее колличество выпущенных изделий: "; int shop; cin >> shop;
int count = 0; for(int i = 0; i < N; ++i) {
if(details[i].shop == shop) count += details[i].quantity; }
cout << "Цех номер " << shop << " выпустил " << count << " дуталей" << endl; } Тут имеются недоделки и неопределенности по поводу которых я уже отписал в личку. Задание №8 Code #include <iostream> #include <math.h> using namespace std;
double f(double x) { int const first = 1; int const last = 20;
double s = 0;
for(int n = first; n <= last; ++n) s += (2 * n + 1) * pow(x, n - 1) / sin(n * x);
return s; }
int main(int argc, char** argv) { double const a = 0.1; double const b = 1.2; double const h = 0.1;
cout << "x\t\ty = f(x)" << endl;
for(double x = a; x <=b; x += h) cout << x << "\t\t" << f(x) << endl; } Это бывшее задание №3, просто я не сразу прочел все задания. В общем решение задания №3 я изменил убрав функцию f(x) и поместив ее тело в main. Задание №10 Code #include <iostream> #include <math.h> #include <string> using namespace std;
int main(int argc, char** argv) { locale::global(locale("rus")); struct RECORD{ string name; string city; int point; };
cout << "Введите колличестов записей о студентах: "; int N; cin >> N;
RECORD* students = new RECORD[N];
for(int i = 0; i < N; ++i) { cout << "Введите ФИО студента: "; cin >> students[i].name; cout << "Введите город студента: "; cin >> students[i].city; cout << "Введите средний балл студента: "; cin >> students[i].point; }
string const city = "Minsk"; int const point = 220;
for(int i = 0; i < N; ++i) if(students[i].city == city && students[i].point > point) cout << students[i].name << '\t' << students[i].city << students[i].point << endl; } Здесь имеются те же проблеммы что и в задании №7 А куда в последнем задании пристроить пузырьковую сортировку? В моем решении никакой сортировки нету.
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 17:46 |
|
| |
Matou | Дата: Пятница, 05 Ноября 2010, 13:51 | Сообщение # 1088 | Тема: Приспособить класс string к русскому алфавиту |
Исходный коТ
Сейчас нет на сайте
| собственно вопрос в теме, но еще раз поясню: Code #include <string> //подключаю описание locale::global(locale("rus")); // эта штука у меня есть //... string str; // обьявляю обьект cin >> str; // что-то там пытаюсь в него записать кириллицей cout << str; // выдает ёгрики вопрос, как вы дагадались, что нужно сделать чтобы ёгрики не выдавал?
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 13:52 |
|
| |
Matou | Дата: Четверг, 04 Ноября 2010, 21:32 | Сообщение # 1089 | Тема: Помогите решить задачи по С++ |
Исходный коТ
Сейчас нет на сайте
| Задание №1 Code #include <iostream> #include <math.h> using namespace std;
int main(int argc, char** argv) { double x = 182.51; double y = 18.225; double z = -0.032981; double s = 0;
double a1, a2;
a1 = pow(x, y / x); a1 -= pow(y / x, 1.0 / 3.0); a1 = abs(a1);
a2 = cos(y) - z / (y - x); a2 /= 1 + pow(y - x, 2); a2 *= (y - x); s = a1 + a2;
cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; cout << "s = " << s << endl; } Не вижу у себя ошибок, но последняя значащяя цифра результата не совпадает Задание №2 Code #include <iostream> #include <math.h> using namespace std;
int main(int argc, char** argv) { locale::global(locale("rus"));
double x, y, s;
cout << "Введите x: "; cin >> x; cout << "Введите y: "; cin >> y;
if(x > abs(y)) { s = 2 * pow(x, 3) + 3 * pow(y, 2);
cout << "x > |y|, поэтому s = 2 * x^3 + 3 * y^2 = " << s << endl; } else if(3 < x && x < abs(y)) { s = abs(x - y);
cout << "3 < x < |y|, поэтому s = |x - y| = " << s << endl; } else { s = pow(abs(x - y), 1.0 / 3.0);
cout << "условия x > |y| и 3 < x < |y| не выполнены, поэтому s = pow(|x - y|, 1 / 3) = " << s << endl; } } Задание №3 Code #include <iostream> #include <math.h> using namespace std;
int main(int argc, char** argv) { double const a = 0.1; double const b = 1.2; double const h = 0.1;
cout << "x\t\ty = f(x)" << endl;
for(double x = a; x <=b; x += h) { int const first = 1; int const last = 20;
double y = 0;
for(int n = first; n <= last; ++n) y += (2 * n + 1) * pow(x, n - 1) / sin(n * x);
cout << x << "\t\t" << y << endl; } } Задание №4 Code #include <iostream> using namespace std;
int main(int argc, char** argv) { locale::global(locale("rus"));
int const max = 100; // Максимальный размер массива, число k должно лежать в пределах 0..100 double m[max]; double negative[max]; // Массив для отрицательных элементов double positive[max]; // Массив для не отрицательных элементов
int k; // Число элементов в массиве, задается пользователем int indexN = 0; // Индексы для адресации и подсчета int indexP = 0; // элеметов в дополнительных массивах
cout << "Введите колличестов элементов в массиве: "; cin >> k;
// заполнение массива for(int i = 0; i < k; ++i) { cout << "Ведите элемент массива номер " << i + 1 << ": "; cin >> m[i]; }
// заполнение дополнительных массивов for(int i = 0; i < k; ++i) if(m[i] < 0) negative[indexN++] = m[i]; else positive[indexP++] = m[i];
cout << "Исходный массив: " << endl; for(int i = 0; i < k; ++i) cout << m[i] << endl;
cout << "Maccив с отрицательными элементами: " << endl; for(int i = 0; i < indexN; ++i) cout << negative[i] << endl;
cout << "Maccив с остальными элементами: " << endl; for(int i = 0; i < indexP; ++i) cout << positive[i] << endl; } Задание №5 Code #include <iostream> #include <math.h> using namespace std;
int main(int argc, char** argv) { locale::global(locale("rus")); double** matrix;
int N, M;
cout << "Введите размерность матрицы M, N: "; cin >> M >> N;
matrix = new double* [M];
for(int i = 0; i < M; ++i) matrix[i] = new double[N];
for(int i = 0; i < M; ++i) for(int j = 0; j < N; ++j) { cout << "Введите элемент maxrix[" << i << "][" << j << "] = "; cin >> matrix[i][j]; }
// Поиск максимального элемента выше побочной диагонали double max = matrix[0][0]; for(int i = 0; i < M - 1; ++i) for(int j = 0; j < N - i - 1; ++j) if(max < matrix[i][j]) max = matrix[i][j];
// Печать матрицы for(int i = 0; i < M; ++i) { for(int j = 0; j < N; ++j) cout << matrix[i][j] << '\t'; cout << endl; }
cout << "Максимальный елемент выше побочной диаганали равен: " << max; } Тут есть одна неточность, если М != N алгоритм поиска максимального элемента будет работать некорректно, чтобы этого избежать можно, например, предварительно "оквадратить" матрицу. Ну и насчет побочной диагонали, я там понимаю она выгледит как-то так: Диагональ обозначена красным цветом, а то что выше нее - зеленым. На остальное пока время не хватает, попозже решу
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 14:35 |
|
| |
Matou | Дата: Вторник, 02 Ноября 2010, 00:54 | Сообщение # 1090 | Тема: Фильмы постапокалипсисной тематики |
Исходный коТ
Сейчас нет на сайте
| Нити На следующий день Письма мертвого человека
|
|
| | |
Matou | Дата: Понедельник, 01 Ноября 2010, 20:45 | Сообщение # 1092 | Тема: Исходники ОС |
Исходный коТ
Сейчас нет на сайте
| Впринципе если тебе надо учиться, а знаний и опыта не много, то лучше взять учебник, могу посоветовать"Операционные системы. Разработка и реализация" Э. Таненбаум, А. Вудхалл. К ней идет диск с ОС MINIX3. Quote (vlados) мне надо с оконным интерфейсом...(Графический интерфейс) У операционных систем немного другое предназначение нежели предоставлять графических интерфейс. Может быть тебе надо именно GUI освоить, а не ОС?
|
|
| |
Matou | Дата: Воскресенье, 31 Октября 2010, 14:12 | Сообщение # 1093 | Тема: Нубский ворпос. |
Исходный коТ
Сейчас нет на сайте
| Обратный вызов же. Если на пальцах для твоего случая, то эта функция вызывается системой при обработке событий окна к которому она привязана. Вот на это CALLBACK и указывает, ну и тут http://ru.wikipedia.org/wiki/Callback_(программирование) можно еще почитать.
Сообщение отредактировал Matou - Воскресенье, 31 Октября 2010, 14:18 |
|
| |
Matou | Дата: Пятница, 29 Октября 2010, 13:41 | Сообщение # 1094 | Тема: Вопрос нуба. |
Исходный коТ
Сейчас нет на сайте
| Quote (ezhickovich) Дык таких тем было уже много, но видите ли гуглить всем влом... Ну так выложил бы сцылки на самые интересные темы этого ряда.
|
|
| |
Matou | Дата: Пятница, 29 Октября 2010, 13:38 | Сообщение # 1095 | Тема: Оцените дизайн кухни |
Исходный коТ
Сейчас нет на сайте
| Ужос. Если бы мне кто-то попытался такой дизайн втюхать... Я бы посоветовал не делать все таким ярким, особенно это обой касается.
|
|
| |
Matou | Дата: Среда, 27 Октября 2010, 23:15 | Сообщение # 1096 | Тема: Вопрос нуба. |
Исходный коТ
Сейчас нет на сайте
| Надо бы создать темку где у всех апологетов лучшего учебника по С++ для начинающих будет возможность высказаться почему именно та или иная книга лучше. Интересно было бы почитать.
|
|
| |
Matou | Дата: Вторник, 26 Октября 2010, 21:52 | Сообщение # 1097 | Тема: Вопрос нуба. |
Исходный коТ
Сейчас нет на сайте
| MiKanUil))) тролит во всех постах, а вы ведетесь. Я останусь верен своим убеждениям и посоветую Страуструппа но с этим не все согласны
|
|
| |
Matou | Дата: Вторник, 26 Октября 2010, 00:41 | Сообщение # 1098 | Тема: Полностью пройденные вами игры |
Исходный коТ
Сейчас нет на сайте
| Тысячи их! Перечислять всякую попсу вроде GTA ни к чему, лучше скажу что в конце 90х прошел РЕМБО на денди, на каком-то азиатском языке, хочу заметить что для получения тех или иных заданий или прохождения уровня там были диалоги. Как и многие игры на денди того времени она была хардкорной и без возможности сохранения, а уш бесконечные попытки понять что из себя представляют наборы иероглифов и что из них нужно выбрать и для чего - просто убивали (X_X)
Сообщение отредактировал Matou - Пятница, 05 Ноября 2010, 00:42 |
|
| |
Matou | Дата: Понедельник, 25 Октября 2010, 21:40 | Сообщение # 1099 | Тема: Начальные параметры объектов, кто как? |
Исходный коТ
Сейчас нет на сайте
| Из внешнего файла как-то удобней выходит, широкие возможности по параметризации без перекомпиляции. В процессе разработки удобнее будет настраивать те или иные параметры.
|
|
| | |
|