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

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

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 и добавляй??



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