Форум » Вопросы о разработке игр » В чем проблема скрипта? » Ответить

В чем проблема скрипта?

RaSIm: Программирую в среде Windows в программе Microsft Visual C++ 6.0 #include <iostream> #include <string> int main() { string word; while ( cin >> word ) cout << " : " << word << "\n"; cout << " !"; } Ошибку выводит при компиляции: --------------------Configuration: new - Win32 Debug-------------------- Compiling... new.cpp C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(6) : error C2065: 'string' : undeclared identifier C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(6) : error C2146: syntax error : missing ';' before identifier 'word' C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(6) : error C2065: 'word' : undeclared identifier C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(8) : error C2065: 'cin' : undeclared identifier C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(9) : error C2065: 'cout' : undeclared identifier C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(9) : error C2297: '<<' : illegal, right operand has type 'char [4]' C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(10) : error C2297: '<<' : illegal, right operand has type 'char [3]' C:\Documents and Settings\Rasim and Diana\Рабочий стол\My C++ Project\new.cpp(11) : warning C4508: 'main' : function should return a value; 'void' return type assumed Error executing cl.exe. new.exe - 7 error(s), 1 warning(s)

Ответов - 72, стр: 1 2 3 4 All

netlib: Ну, во-первых, надо убедиться, что ваша программа компилируется как C++, а не как чистый C. Далее можно заменить iostream на iostream.h. Если вы все же хотите сохранить <iostream>, то не забудьте включить пространство имен std using namespace std Без этого вам надо писать std::cout << "Hello" << endl

RaSIm: я компилирую с расширения *.срр

RaSIm: Вот я исправил и все работает: #include <iostream> #include <string> using namespace std; int main(void) { string word; while ( cin >> word ) cout << " : " << word << "\n"; cout << " !"; } А МОЖНО Я ЕЩЕ ОДИН СКРИПТ С ОШИБКОЙ ПРИВЕДУ?


Inferno: А МОЖНО Я ЕЩЕ ОДИН СКРИПТ С ОШИБКОЙ ПРИВЕДУ? Конечно можна.

RaSIm: Почему открывается в виде командной строки, а не windows

netlib: А как вы еще хотите чтобы открывалось? cin и cout это консольный ввод/вывод (командная строка). У вас же нет ни окна ни оконной процедуры ни WinMain.

RaSIm: Я хочу чтобы открывалась как окно windows. Как это сделать?

stayer: Для начала надо перестать называть программу скриптом. Потом нужно взять и посмотреть в WINAPI на два прекрасных элемента, static text и edit text, после чего создать приложение (с использованием мастера) win32 и написать примерно 200 строк кода. Очень многое можно почерпнуть вот отсюда ТНБ в помощь!

netlib: Примерно вот так #include <windows.h> HWND MainWindowHandle = 0; bool InitWindowsApp(HINSTANCE instanceHandle, int show); int Run(); LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); // Эквивалент main() для Windows int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd) { if(!InitWindowsApp(hInstance, nShowCmd)) { ::MessageBox(0, "Init - Failed", "Error", MB_OK); return 0; } return Run(); } bool InitWindowsApp(HINSTANCE instanceHandle, int show) { WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = instanceHandle; wc.hIcon = ::LoadIcon(0, IDI_APPLICATION); wc.hCursor = ::LoadCursor(0, IDC_ARROW); wc.hbrBackground = static_cast<HBRUSH>(::GetStockObject(WHITE_BRUSH)); wc.lpszMenuName = 0; wc.lpszClassName = "Hello"; if(!::RegisterClass(&wc)) { ::MessageBox(0, "RegisterClass - Failed", 0, 0); return false; } MainWindowHandle = ::CreateWindow( "Hello", "Hello", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, instanceHandle, 0); if(MainWindowHandle == 0) { ::MessageBox(0, "CreateWindow - Failed", 0, 0); return false; } ::ShowWindow(MainWindowHandle, show); ::UpdateWindow(MainWindowHandle); return true; } int Run() { MSG msg; ::ZeroMemory(&msg, sizeof(MSG)); while(::GetMessage(&msg, 0, 0, 0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WndProc(HWND windowHandle, UINT msg, WPARAM wParam, LPARAM lParam) { // Обработка заданных сообщений: switch( msg ) { case WM_LBUTTONDOWN: // Если нажата левая кнопка мыши, // отображаем диалоговое окно. ::MessageBox(0, "Hello, World", "Hello", MB_OK); return 0; case WM_KEYDOWN: // Если нажата клавиша Esc, уничтожаем // главное окно приложения if( wParam == VK_ESCAPE ) ::DestroyWindow(MainWindowHandle); return 0; case WM_DESTROY: // Если получено сообщение о завершении работы, // отправляем сообщение, которое завершит работу // цикла обработки сообщений. ::PostQuitMessage(0); return 0; } return ::DefWindowProc(windowHandle, msg, wParam, lParam); }

RaSIm: Мне охота научиться создавать игры. Что мне для этого надо знать и изучать? И что лучше: эл.книги или нормальные из магазина?

RaSIm: netlib, я вставил этот код, но выдает ошибку при компиляции: --------------------Configuration: win - Win32 Debug-------------------- Compiling... win.cpp Linking... LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/win.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. win.exe - 2 error(s), 0 warning(s)

netlib: RaSIm пишет: Мне охота научиться создавать игры. Что мне для этого надо знать и изучать? Программирование на каком-нибудь языке. С моей точки зрения предпочтительней C++ или C#. Затем, когда научитесь программировать и создавать простые приложения для Windows почитайте что-нибудь по DirectX (или по XNA - это проще). RaSIm пишет: И что лучше: эл.книги или нормальные из магазина? Книги разные нужны, книги всякие важны. Выбирайте как вам удобнее читать, но помните, что не всякая электронная книга есть в бумажном виде, равно как и не всякая бумажная книга есть в электронном. Так что у каждого разработчика есть и те и другие.

netlib: RaSIm пишет: netlib, я вставил этот код, но выдает ошибку при компиляции: Создайте новый проект и выберите для него тип Windows Application (у вас сейчас тип Console Application).

RaSIm: Понятно. Я изучаю С++, но некоторых вещей не понимаю, стоит ли мне продолжать читать дальше (не поняв, например, прошлой темы)?.. И я постоянно зацикливаюсь на чем либо при изучении, и не могу продолжить изучение дальше, как поступить в таком случае (Те же самые ошибки кодов в самой книге)?

stayer: RaSIm очень советую вот этоРоберт Лафоре "ООП в С++"

netlib: RaSIm пишет: Я изучаю С++, но некоторых вещей не понимаю, стоит ли мне продолжать читать дальше (не поняв, например, прошлой темы)?.. Скачайте книгу "Программирование стратегических игр". Там во 2 главе подробно описано создание простого приложения для Windows. Попытайтесь повторить его, если что-то непонятно - пишите вопросы.

RaSIm: Я сам из Башкирии и из района. Я наверно завтра поеду в уфу и куплю 2-3 книги.stayer пишет: Скачайте книгу "Программирование стратегических игр". Там во 2 главе подробно описано создание простого приложения для Windows. Попытайтесь повторить его, если что-то непонятно - пишите вопросы. Ну да, я это уже сделал, появляется окно виндоус. Ну допустим, я хочу, что бы у этого окна был значек. Как мне это сделать? Как я понял, надо внести изменения здесь: wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); Но какие именно, что бы задать свой значок? и в по моему они должны быть в одной директории, да?

RaSIm: Я смог поставить стандартный значок Windows. IDI_WARNING - поставил. А как можно поставить свой собственный значок? В какую папку значок кидать?

stayer: RaSIm , набери в поисковике Win32 API, или смотри первые шаги, там про винапи уйма всего. Про свою иконку, нарисуй в редакторе присвой ID и добавляй.

RaSIm: у меня есть своя иконка с расширением *.ico, в смысле присвой ID и добавляй??

netlib: Значок вы можете добавить прямо в ресурсы приложения. Тогда он будет внутри exe-файла. Про это подробно рассказывается в книге Андре ЛаМота "Программирование игр для Windows. Советы профессионала" ее можно купить или скачать электронную версию. Начните изучение с нее.

RaSIm: Сегодня куплю книжки для начинающих по С++ и по изучаю, иначе я никогда не овладею этим языком...

netlib: Книжек просто по C++ недостаточно. Вам обязательно нужны книги по программированию на С++ для Windows. Только тогда вы разберетесь с сообщениями, значками, курсорами и прочей фигней.

RaSIm: А какие нужны параметры для Microsoft Visual C++ 6.0 для работы такой проги в командной строке? #include <stdio.h> main() { printf ("Hello world\n"); }

RaSIm: Ну я как раз то и заказал себе две книжки: 1. Программирование на С++ в среде Windows для начинающих. 2. Программирование игр на DirectX в среде Windows для начинающих. Возможно сегодня уже заказ выполнится... :)

stayer: netlib, ты не прав. Надо сначала понять как писать на С++, и только потом уже WinAPI и все остальное.RaSIm Кто автор?

RaSIm: Незнаю. Еще не купили.

netlib: RaSIm пишет: А какие нужны параметры для Microsoft Visual C++ 6.0 Какие именно параметры вас интересуют? Просто создаете новый проект как терминальное приложение и все.

RaSIm: #include <stdio.h> main() { printf ("Hello world\n"); } Мне надо, чтобы работал данный код. Но я незнаю какие именно параметры нужны (ну типа C++Source File, Win32 Application - какие там нужны параметры?) ??? В книге написано, что нужны некие параметры...

RaSIm: http://netlib.narod.ru/library/book0003/index.htm - ВОТ эта книга. Там есть: "Начнем пожалуй", и там надо напечатать: "Hello World". Но какие выставить параметры???

Inferno: Мне надо, чтобы работал данный код. Но я незнаю какие именно параметры нужны (ну типа C++Source File, Win32 Application - какие там нужны параметры?) ??? В книге написано, что нужны некие параметры... А он у вас что ли не работает? ВОТ эта книга. Там есть: "Начнем пожалуй", и там надо напечатать: "Hello World". Но какие выставить параметры??? Создаете консольное приложение(Win32 Console), добавляете файл на C++, и компилируете программу.

Inferno: http://netlib.narod.ru/library/book0003/index.htm Эта книга сложна для начинающих, потому что написана самим основателем языка СИ и содержит сложные алгоритмы. Я бы посоветовал: Дейтел. Как программировать на С Дейтел. Как программировать на C++

RaSIm: Inferno пишет: Я бы посоветовал: Дейтел. Как программировать на С Дейтел. Как программировать на C++ Жаль, что нельзя их просто скачать... RaSIm пишет: Создаете консольное приложение(Win32 Console), добавляете файл на C++, и компилируете программу. Все равно не прет. Win 32 Console Application -> A typical "Hello World" -> New -> C++ Source File.

Inferno: Жаль, что нельзя их просто скачать... Вы в интернете не пробовали искать?

Inferno: Все равно не прет. Что именно у вас не получается? Win 32 Console Application -> A typical "Hello World" -> New -> C++ Source File. Давайте я подробно опишу: File->New->Win32 Console Application->An Empty project. После того как создали новый пустой проект: File->New->C++ Source File. После чего в созданный вами source file добавляете ваш код и компилируете(F7), а затем запускаете(Ctrl+F5).

RaSIm: Inferno пишет: Давайте я подробно опишу: File->New->Win32 Console Application->An Empty project. После того как создали новый пустой проект: File->New->C++ Source File. После чего в созданный вами source file добавляете ваш код и компилируете(F7), а затем запускаете(Ctrl+F5). Вооо! Теперь работает...

RaSIm: RaSIm пишет: Вы в интернете не пробовали искать? Вот вам ссылки для скачивания: http://rapidshare.com/files/3687279/001524.rar.html http://c2p.ru/c/x-m-dejtel-p-dzh-dejtel-kak-programmirovat-na-c.html Искал я в интернете много раз. Но не находил подходящего мне. Не знал с чего начать. Ща вот это скачаю и посмотрю. Вы мне вроде дали ссылку на "Программирование трехмерных игр. Советы профессионала."???

Inferno: Искал я в интернете много раз. Но не находил подходящего мне. Не знал с чего начать. Нужно искать в http://www.google.ru Гугл рулит. :) Вы мне вроде дали ссылку на "Программирование трехмерных игр. Советы профессионала."??? Разве? Перед тем как вам дать ссылку, я лично скачал. Там должно быть Как программировать на C. А у вас при скачивании оказалась другая книга?

RaSIm: Все я скачал! Книга прикольная, вроде все подробно описано. Но не думаете ли Вы, что мне лучше сперва прочитать ту начатую книгу. Или ссылка, которую Вы дали будет для меня более понятной?

stayer: Inferno , палишь netlib-а. По новому закону нельзя размещать ссылки на варез. RaSIm вот тебе списочек: На вражеском, очень много Про книги по геймдеву Снова на вражеском Создание 3Д приложений а так же torrents.ru и google тебе помогут.

stayer: RaSIm какую книгу качнул????

Inferno: Inferno , палишь netlib-а. По новому закону нельзя размещать ссылки на варез. Варез - это не законное программное обеспечение. http://ru.wikipedia.org/wiki/%D0%92%D0%B0%D1%80%D0%B5%D0%B7 Я вроде не давал ссылки на пиратское ПО, а только на книжки. Кстати, что за новый закон, а то я не в курсе. Можна ссылку где можна почитать о новых правилах общения на форуме Netlibа.

RaSIm: книгу качнул которую кот дал.

Inferno: книгу качнул которую кот дал. Вообще-то я не кот, а программер.

RaSIm: Просто аватар прикольный :)

RaSIm: Ну вот я решаю какие то тупые и бесполезные задачки типа найти площадь 3-угольника или обьем куба. Или например, просчитать кол-во слов в строке - ну и ВСЕ эта какое отношение имеет к программированию игр?????

stayer: Базисное.

RaSIm: RaSIm пишет: Базисное. ???

netlib: RaSIm пишет: Ну вот я решаю какие то тупые и бесполезные задачки типа найти площадь 3-угольника или обьем куба. Ну а в программировании игр вы будете решать такие же тупые задачки - определить нормаль или бинормаль или касательную. Вычислить точку пересечения луча с плоскостью, выполнить преобразование из объектной системы координат в мировую или экранную.

Inferno: Ну а в программировании игр вы будете решать такие же тупые задачки - определить нормаль или бинормаль или касательную. Вычислить точку пересечения луча с плоскостью, выполнить преобразование из объектной системы координат в мировую или экранную. Совершенно верно. Но может не надо было сразу раскрывать секреты разработки игр, а то человек испугается и передумает.

RaSIm: Я уже испугался. Я думаю нет смысла изучать все это одному... И времени надо очень много. Куплю книгу вскоре и подумаю...

netlib: Зря пугаетесь, учите основы программирования, а далее все по ходу изучения придет. Я даже помню на русский перевели книгу по С++, где все изучение строилось на написании простеньких игр (она у меня даже где-то стоит).

RaSIm: Понятно :)

netlib: Попробуйте программировать на C# с XNA - будет проще.

RaSIm: ок

RaSIm: Купил две книжки. Других ваще не было. Щас просмотрю что там...

RaSIm: 1-я книга: C# начала программирования (Э.А. Ишкова) 2-я книга: DirectX 10 - Это просто (Программируем графику на С++) - Алексей Попов Такие книги мне для начала нормально???

netlib: В принципе нормально, но учтите, что DirectX 10 работает только под Windows Vista, поэтому большинство все еще использует DirectX 9. По C# я предпочитаю книгу Джесса Либерти "Программирование на C#".

RaSIm: Я думаю, что С# - неплохой выбор для начала, но сама книга хорошая подробная и понятная. Все в ней подробно описано... Насчет DirectX 10 , то я вот собираюсь на днях установить Висту и попробывать начать на 10-ом драйвере... Книги нормальные, буду пытаться что то понять. Сейчас пытаюсь скачать Microsoft Visual Studio 2005 для компиляции...

RaSIm: Я вот собирался переустановить систему и появилось 2 вопросика: 1) как узнать разрядность моего компьютера (32 или 64 разрядный)??? 2) Как отформатировать полностью жесткий диск? Я могу форматнуть любоой локальный диск через виндоус, но на котором лежит ОС не могу (Не разрешает форматировать его через виндоус). Значит надо локальный диск "С" форматировать через Биоз???

netlib: RaSIm пишет: как узнать разрядность моего компьютера (32 или 64 разрядный)??? По модели установленного процессора. Хотя зачем вам это? Если собираетесь заниматься игрушками, то систему необходимо ставить 32-разрядную, независимо от разрядности компьютера. RaSIm пишет: 2) Как отформатировать полностью жесткий диск? Я могу форматнуть любоой локальный диск через виндоус, но на котором лежит ОС не могу (Не разрешает форматировать его через виндоус). Значит надо локальный диск "С" форматировать через Биоз??? При установке системы, если вы выбираете новую установку, вам предложат отформатировать диск С.

RaSIm: аа, понятно... Скоро поставлю висту. И попробую изучить Директ 10

RaSIm: Я читал одну темку по С# и застрял на нем. Обьясните пожалуйста на понятном обычному человеку языке, что это такое: "Автоматическое приведение типов при присваивании". И зачем нужны @uint и например @ushort - Это имена переменных???

RaSIm: Я изучаю C# и вроде бы что то получается. Но я решаю задачи типа: построить с помощью цикла таблицу умножения, ввод метки с клавиатуры, применение массивов и т.д. А смысл их решать? Нужно ли все это для создания игр? Вот мои суждения (Условие в условии): 1. Если (энергия = 0) то (включить красный индикатор) иначе {если (энергия >= 10) то (включить зеленый индикатор) иначе (включить желтый индикатор)}. 2. Если (танк едет) то {если (танк едет быстро) то (воспроизвести анимацию движения гусениц со скоростью = 2) иначе (воспроизвести анимацию со скоростью = 1)} иначе (не воспроизводить анимацию движения гусениц). Верны ли мои суждения??? Построены ли игры полностью на таких условиях???

netlib: RaSIm пишет: Построены ли игры полностью на таких условиях??? Не полностью. Но это одна из составляющих. Игровое поле, например, заполняется в цикле. Также в цикле выполняется обычно проверка столкновений, да и сама игра - один большой цикл.

RaSIm: Понтяно.

RaSIm: Я ИЗУЧАЛ СИ ШАРП И ВОТ ПОПРОБЫВАЛ НАПИСАТЬ СВОЮ ПРОГУ: //Вычисление площади прямоугольника using System; class Test3 { public static void Main() { int a, b, s; char aline, bline; Console.WriteLine(" Введите длину прямоугольника"); aline = (char)Console.Read(); if (aline > 0) { Console.WriteLine(" Длина прямоугольника = " + aline); a = aline; Console.WriteLine(" Введите ширину прямоугольника"); bline = (char)Console.Read(); } //Конец if else Console.WriteLine(" Ошибка! Возможно, Вы ввели отридцательное число ..."); ; if (bline > 0) { Console.WriteLine(" Ширина прямоугольника = " + bline); b = bline; } //Конец if else Console.WriteLine(" Ошибка! Возможно, Вы ввели отридцательное число ..."); ; Console.WriteLine(" Вычисление площади прямоугольника ..."); s = a * b; Console.WriteLine(" Площадь прямоугольника = " + s); Console.WriteLine(" КОНЕЦ ЗАДАЧИ"); } //Конец Main } //Конец Test3 НЕ ЗНАЮ В ЧЕМ ОШИБКА, НЕ РАБОТАЕТ, ВЫ НЕ МОЖЕТЕ МНЕ ПОДСКАЗАТЬ?

netlib: Вы читаете char и пытаетесь преобразовать его в int. В этом и ошибка.

RaSIm: Но я читал темку, там типа нельзя преобразовать char в int автоматически. Но в книге написано, что можно принудительно... В общем, я хотел написать прогу свою: ввод двух цифр с клавиатуры и найти площадь прямоугольника...

stayer: RaSIm ну так ты и вводи сразу дабл. в шарпе не знаю как, но в С++ #include <iostream> using namespace std; int main() { double a,b; cout<<"Please input 2 number ->\n"; cin>>a>>b; cout<<"Square rect :"<<a*b<<endl; cin>>a; //что б посмотреть результат return 0; }

netlib: Преобразовав char в int вы получаете ASCII-код символа, а не число соответствующее введенной цифре.

Inferno: RaSIm очень советую вот это http://www.ozon.ru/context/detail/id/1313520/?partner=dore Уважаемый stayer, а вы что владелец этого сайта: http://books.dore.ru



полная версия страницы