Вопрос-Ответ (C++)
| |
Kornival | Дата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1 |
The Witcher
Сейчас нет на сайте
| Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.
Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
|
|
| |
MrSmith | Дата: Понедельник, 19 Марта 2012, 21:26 | Сообщение # 161 |
EG Development
Сейчас нет на сайте
| Нет, реализация в отдельном cpp файле с включенным заголовочным. Пример: //myclass.h
class myclass{
void myfunc(); }
//myclass.cpp
#include "myclass.h"
void myclass::myfunc(){
}
Учу С++, рисую пиксельарты, использую D, Lua с LOVE Skype: mrsmith333
|
|
| |
AgentToxa | Дата: Вторник, 20 Марта 2012, 11:53 | Сообщение # 162 |
был не раз
Сейчас нет на сайте
| Большое спасибо всем за помощь.
Учусь программировать на C++)
|
|
| |
goldsphere | Дата: Вторник, 20 Марта 2012, 12:09 | Сообщение # 163 |
заслуженный участник
Сейчас нет на сайте
| Привет всем...через дня два после установки glut у меня при входе в браузер стала выскакивать такая ошибка Браузер то открывается, но ошибка мне не нравится! Надеюсь в тему!Как мне избавиться от неё?
FinderX - Android Аркада
Сообщение отредактировал goldsphere - Вторник, 20 Марта 2012, 12:10 |
|
| |
_-AndruxA-_ | Дата: Вторник, 20 Марта 2012, 12:17 | Сообщение # 164 |
почетный гость
Сейчас нет на сайте
| goldsphere, А у меня при включении компьютера такая фигня:((
За помощь можно и "+" поставить!
|
|
| |
Лёха2008 | Дата: Среда, 21 Марта 2012, 09:59 | Сообщение # 165 |
изучаю c++
Сейчас нет на сайте
| Quote (goldsphere) через дня два после установки glut у меня при входе в браузер стала выскакивать такая ошибка Хм... Как glut может быть связан с браузером? Ищи проблему в другом. Попробуй скачать visual c++ 2010 redistributable
|
|
| |
goldsphere | Дата: Среда, 21 Марта 2012, 11:16 | Сообщение # 166 |
заслуженный участник
Сейчас нет на сайте
| Лёха2008, Cпасибо, довольно странно, но оно прошло само.Я тоже скорее знал, что глут тут не причём тем более раз ошибка возникла через пару дней..
FinderX - Android Аркада
|
|
| |
Programmist001 | Дата: Четверг, 22 Марта 2012, 18:47 | Сообщение # 167 |
был не раз
Сейчас нет на сайте
| Всем привет кто-бы посоветовал мне учителя по С++ Разумеется бесплатно у меня с финансами плоховата Чем я могу платить только "БОЛЬШОЙ БЛАГОДАРНОСТЬЮ" Писать в ЛС.
Модераторы гандоны ((
|
|
| |
Нохчи | Дата: Четверг, 22 Марта 2012, 18:57 | Сообщение # 168 |
заслуженный участник
Сейчас нет на сайте
| Quote (Programmist001) Всем привет кто-бы посоветовал мне учителя по С++ Спорим, он его не выучит?
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Четверг, 22 Марта 2012, 18:57 |
|
| |
warzes | Дата: Четверг, 22 Марта 2012, 18:58 | Сообщение # 169 |
участник
Сейчас нет на сайте
| берешь книгу по c++, читаешь, что не понятно спрашиваешь.
Мой блог Вики DirectX
|
|
| |
Dirol | Дата: Четверг, 22 Марта 2012, 23:57 | Сообщение # 170 |
был не раз
Сейчас нет на сайте
| Quote (Programmist001) кто-бы посоветовал мне учителя по С++ Твои усидчивость и терпение - твои учителя. Лекции, уроки, учебники, видео-обучалки - всего этого хлама полно. Конечно это не значит, что проблем с обучением возникнуть не должно, нужно много читать. Если возникают вопросы, спрашиваешь у других, но главное - никогда не проси кого-то сделать что-нибудь за тебя. Только подсказки или объяснения. Так с лету никто тебя не научит, даже если бы взялся.
Science is interesting! If you don't agree, you can f*ck off.
|
|
| |
goldsphere | Дата: Суббота, 24 Марта 2012, 12:51 | Сообщение # 171 |
заслуженный участник
Сейчас нет на сайте
| Подскажите пожалуйста : до какого уровня необходимо выучить С++, чтобы можно было начинать работать с движком?
FinderX - Android Аркада
|
|
| |
warzes | Дата: Суббота, 24 Марта 2012, 13:21 | Сообщение # 172 |
участник
Сейчас нет на сайте
| goldsphere, работать с готовым? среднего достаточно. То есть синтаксис, более-менее хорошее понимание ООП, и желательно знание паттернов (хотя бы потому что это позволит быстрее понять как и что работает в движке - синглтоны, фабрики, наблюдатели - это минимум который почти во всех движках есть)
Написать свой - нужно такое знание, когда понимаешь что больше нечего изучать по книгам (не в смысле что ты мастер :D, а тогда когда понимаешь что сколько бы книги не читал - знаний не прибавляется)
Мой блог Вики DirectX
|
|
| |
goldsphere | Дата: Суббота, 24 Марта 2012, 15:01 | Сообщение # 173 |
заслуженный участник
Сейчас нет на сайте
| warzes, Спасибо буду стремиться!
FinderX - Android Аркада
|
|
| |
Snuux | Дата: Суббота, 24 Марта 2012, 18:15 | Сообщение # 174 |
постоянный участник
Сейчас нет на сайте
| Quote (warzes) синглтоны, фабрики, наблюдатели - это минимум который почти во всех движках есть) Почитал об этом и сильно расстроился. Это же сколько нужно учить язык программирования и теорию информатики, чтоб начать пользоваться движком? Неужели все настолько сложно и не реально начать делать "нормальные" (не консольные) игры без этого?
P.S. В общем теперь вопрос по теме (но предыдущие вопросы тоже меня волнуют): Как сделать управление "со стрелок" в консоли? Все перепробовал get(); getchar(); kbhit(); но не помогает, и главное гугл - молчит по этому поводу. Я уверен - это точно есть, но найти что-то - совсем не могу.
За помощь - заслуженный плюс, как всегда)Добавлено (24.03.2012, 18:15) --------------------------------------------- Вот мне друг помог (насчет вопроса со стрелками): Code #include <iostream> // cin, cout #include <clocale> // поддержка русского языка #include <conio.h> // _getch() #include <stdlib.h> // поддержка функции очистки экрана system("cls")
using namespace std;
int main() {
setlocale(LC_CTYPE,"Russian"); // установка русского языка
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"); // вызов функции очистки экрана
for (int i = 0; i < 15; i++) { for (int j = 0; j < 20; j++) { cout << map[i][j]; // в циклах поэлементно выводится массив } cout << "\n"; // переход на новую строку после каждого "ряда" }
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--; // изменяем координаты map[x][y] = 'Т'; // "рисуем" объект на новом месте break; case 77: map[x][y] = ' '; y++; map[x][y] = 'Т'; break; case 80: map[x][y] = ' '; x++; map[x][y] = 'Т'; break; case 72: map[x][y] = ' '; x--; map[x][y] = 'Т'; break; } } // конец цикла while
_getch(); return 0; }
Он сказал, что это не его, так что если найдется автор, то пусть напишет в тему или в ЛС, я поставлю плюсик и напишу, что это его код.
|
|
| |
goldsphere | Дата: Понедельник, 26 Марта 2012, 08:10 | Сообщение # 175 |
заслуженный участник
Сейчас нет на сайте
| Народ, кто может попроще объяснить мне, что такое прототип функции и зачем он нужен, а то из книги никак не могу понять...(
FinderX - Android Аркада
|
|
| |
Нохчи | Дата: Понедельник, 26 Марта 2012, 09:23 | Сообщение # 176 |
заслуженный участник
Сейчас нет на сайте
| goldsphere, представь, что у тебя очень много кода и он разнесен по нескольким .cpp файлам. В одном из этих файлов реализуется некая кошерная функция, которую тебе понадобилось вызвать из кода в другом файле. Что будешь делать?
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Понедельник, 26 Марта 2012, 09:23 |
|
| |
goldsphere | Дата: Понедельник, 26 Марта 2012, 10:13 | Сообщение # 177 |
заслуженный участник
Сейчас нет на сайте
| возможно эту функцию можно записать в .h?И вызвать помощью #include?Или я так понимаю вы намекаете, что именно для этого нужен прототип?Странно, но в книге, код не разносили по разным файлам...А каково применение прототипов, если у нас код только в 1 cpp файле?
FinderX - Android Аркада
|
|
| |
Нохчи | Дата: Понедельник, 26 Марта 2012, 10:23 | Сообщение # 178 |
заслуженный участник
Сейчас нет на сайте
| Quote (goldsphere) возможно эту функцию можно записать в .h? Если запихнуть реализацию функции в .h и подключить этот хедер к нескольким .cpp, то компилер начнет орать о multiple definition, поэтому нормальные люди в хедерах пишут прототип и подключают его везде, где функция используется. А реализация может быть только в одном .cpp.
Quote (goldsphere) Странно, но в книге, код не разносили по разным файлам... Короткие примеры из книг разносить смысла нет, вот когда размер кода переваливает за несколько сотен строк, приходит понимание, что все это г* нужно как-то структуризировать.
Quote (goldsphere) А каково применение прототипов, если у нас код только в 1 cpp файле? Вообще-то в таком случае оно не нужно, но можно сделать так: Code int add(int a, int b); int main() { printf("%d",add(10,2)); return 0; }
int add(int a, int b) { return a+b; } Ну ты понял
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
goldsphere | Дата: Понедельник, 26 Марта 2012, 10:33 | Сообщение # 179 |
заслуженный участник
Сейчас нет на сайте
| Ясно, более-менее понял, спасибо) Добавлено (26.03.2012, 10:33) --------------------------------------------- Всё таки хорошо бы ещё пример, когда код разделён в нескольких файлах
FinderX - Android Аркада
|
|
| |
Нохчи | Дата: Понедельник, 26 Марта 2012, 10:50 | Сообщение # 180 |
заслуженный участник
Сейчас нет на сайте
| Ок. У меня есть файл main.cpp, в котором прописывается вся игровая логика и есть файл utils.cpp, в которым находятся некоторые полезные функции, которые при необходимости я без каких-либо изменений могу использовать в следующем своем проекте. Вот их урезанные варианты:
utils.h Code #ifdef _DEBUG #define CheckPtr(ptr, msg, needExit) \ do \ { \ if(NULL == ptr){ \ printf("'%s' returned null pointer\n",msg); \ if(needExit) \ ExitProcess(1); \ } \ }while(0)
#else #define CheckPtr(fname) #endif
VOID MakeColorKey(HGE *hge,HTEXTURE tex, DWORD color);
utils.cpp Code /* Функция делает участки с цветом color в текстуре tex прозрачными */ VOID MakeColorKey(HTEXTURE tex, DWORD color) { HTEXTURE hTex = tex; DWORD texWidth = Texture_GetWidth(hTex); DWORD texHeight = Texture_GetHeight(hTex);
DWORD *Bitmap = Texture_Lock(hTex,FALSE); CheckPtr(Bitmap,"'Bitmap' in 'MakeColorKey'",1);
for(DWORD i = 0; i<texWidth*texHeight; i++) { if(Bitmap[i] == color) Bitmap[i] = 0; } return; }
main.cpp Code include "utils.h" int main() { HTEXTURE tex = new Sprite("img.png"); MakeColorKey(tex,0xFFFFFFFF); Sprite *spr = new Sprite(tex); CheckPtr(spr,'spr in main()',true); spr->render() } Пример с классами был бы лучше, но тебе насколько я понял до них еще далеко.
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Понедельник, 26 Марта 2012, 10:53 |
|
| |
|