Пятница, 15 Ноября 2024, 14:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-Ответ (C++)
KornivalДата: Воскресенье, 04 Сентября 2011, 19:10 | Сообщение # 1
The Witcher
Сейчас нет на сайте
Чтобы не создавать отдельную тему на каждый глупый вопрос, предлагаю задавать их здесь.

Saitei: все вопросы по С задаём в теме Вопрос-Ответ (С). Благодарю за внимание!
Edison6Дата: Суббота, 05 Января 2013, 09:39 | Сообщение # 801
TRUE Programmer
Сейчас нет на сайте
а более простых совсем нету?

Берил сбрей усы
TikaraДата: Суббота, 05 Января 2013, 14:42 | Сообщение # 802
частый гость
Сейчас нет на сайте
Цитата (Edison6)
а более простых совсем нету?


Может и есть, но boost настолько хорош, что искать что-то отдельное просто нет необходимости.

Цитата (Edison6)
Насколько я понимаю то нужно скомпилировать эту программу в Linux чтобы она работала там и в Windows чтобы она работала под виндой.Если так то это получается необходимо ставить вторую ОС или виртуальную машину на которой компилить?


Да, всё верно. Компилите в винде и в линухе. Для линуха можно вполне виртуалку ставить - ничего плохого не произойдёт ^^
SaiteiДата: Суббота, 05 Января 2013, 16:13 | Сообщение # 803
старожил
Сейчас нет на сайте
а русская справка по boost::asio имеется?
ArchidoДата: Суббота, 05 Января 2013, 19:17 | Сообщение # 804
Сэнсэй
Сейчас нет на сайте
Цитата (Edison6)
Если так то это получается необходимо ставить вторую ОС или виртуальную машину на которой компилить?

Как вариант (более простой). Есть еще такое понятие как "кросс-компиляция" - можно на одной системе компилить под что угодно, но правильная настройка всего этого не совсем тривиальна.

Цитата (Edison6)
Из всего найденного думаю пока в сторону boost::asio

Хороший выбор smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
SaiteiДата: Суббота, 05 Января 2013, 19:31 | Сообщение # 805
старожил
Сейчас нет на сайте
У меня вновь возникли вопросы. Они касаются создания файлов в формате .txt (а если можно как-нибудь - то в .dat. Было бы здорово, если игрок не мог просто так открыть файл).
Как сделать так, чтобы файлы создавались, если их нет? Ну и, конечно же, если они есть - то они НЕ перезаписывались (т.к. в этих файлах я собираюсь хранить информацию о персонажах и их характеристики)
ArchidoДата: Суббота, 05 Января 2013, 19:43 | Сообщение # 806
Сэнсэй
Сейчас нет на сайте
Цитата (Saitei)
Как сделать так, чтобы файлы создавались, если их нет? Ну и, конечно же, если они есть - то они НЕ перезаписывались (т.к. в этих файлах я собираюсь хранить информацию о персонажах и их характеристики)


fopen(filename, "ab+"); Тут подробнее информация.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
SaiteiДата: Суббота, 05 Января 2013, 20:38 | Сообщение # 807
старожил
Сейчас нет на сайте
Archido, извините что снова беспокою вас... Этот код написан корректно?:
Код
#pragma once
#include <iostream>
using namespace std;

void options_init() {
  FILE* options_f;
  const char* filename = "options.txt";
  options_f = fopen(filename, "r");
  if(options_f == 0) {
   options_f = fopen(filename, "a+b");
  }
}

Добавлено (05.01.2013, 20:28)
---------------------------------------------

Цитата (Saitei)
тобы файлы создавались, если их нет?

так как всё-таки?...
теперь работаю с <fstream>...
ofstream ofs("test.txt"); - создаёт файл...

Добавлено (05.01.2013, 20:38)
---------------------------------------------
хорошо, спрошу немного другое...

Код
#pragma once
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;

void options_init() {
  ifstream file("options.txt");
  if(file==NULL) {
   cout<<"ERROR!";
   ofstream ofs("options.txt");
   ofs<<"[OPTIONS]"<<endl;
   ofs<<"race = 2"<<endl;
   ofs.close();
  }
  file.close();
  getch();
}

в текстовом файле есть запись "race = 2". Я хочу эту двойку записать в какую-то переменную. Как? Что делать?
SEvgДата: Суббота, 05 Января 2013, 20:53 | Сообщение # 808
Алхимик
Сейчас нет на сайте
Взять готовый парсер XML-файлов и не мучаться... Хватит изобретать велосипеды, там где они уже изобретены сотнями...
Edison6Дата: Среда, 09 Января 2013, 15:51 | Сообщение # 809
TRUE Programmer
Сейчас нет на сайте
Народ помогите скомпилил сервер клиент на boost.asio и не пойму почему не приходит сообщение, вот код:
Клиент

Сервер

И вот собственно сами скомпилинные :
https://www.dropbox.com/s/hx0skytl4phwnqo/Desktop.7z?m

Добавлено (09.01.2013, 14:38)
---------------------------------------------
Код из примеров

Добавлено (09.01.2013, 15:51)
---------------------------------------------
уже разобрался....


Берил сбрей усы

Сообщение отредактировал Edison6 - Вторник, 08 Января 2013, 19:42
Animan2010Дата: Среда, 09 Января 2013, 18:22 | Сообщение # 810
постоянный участник
Сейчас нет на сайте
А есть ли разница между vector и list в с++? По существу это одно и то же

Anima Games
Animan Publishing
SEvgДата: Среда, 09 Января 2013, 18:47 | Сообщение # 811
Алхимик
Сейчас нет на сайте
Разница есть... и не малая... она в скорости, размере занимаемой памяти, ...
Vector - это массив данных, а list - это список, где каждый элемент имеет ссылку, на следующий и предыдущий.

Я бы постеснялся, столь невежественное сообщение писать wink


Сообщение отредактировал SEvg - Среда, 09 Января 2013, 18:54
MR_BorgДата: Среда, 09 Января 2013, 23:07 | Сообщение # 812
участник
Сейчас нет на сайте
Здравствуйте. Меня интересует вопрос по поводу GIF формата. А конкретно его структрура и как его подключить к проекту. Если кто сможет помочь ссылками для C++ буду очень признателен.

Изучаю C++ попутно пишу игру.
ArchidoДата: Четверг, 10 Января 2013, 04:26 | Сообщение # 813
Сэнсэй
Сейчас нет на сайте
Цитата (MR_Borg)
Здравствуйте. Меня интересует вопрос по поводу GIF формата. А конкретно его структрура и как его подключить к проекту. Если кто сможет помочь ссылками для C++ буду очень признателен.

Смотря для чего все это нужно - для покадровой анимации в играх gif обычно никто не использует, а размещают все кадры в одном изображении (атласы). А вообще навскидку с gif умеет работать FreeImage, еще есть некий CxImage, но с ним дел я не имел.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ID_HackerДата: Четверг, 10 Января 2013, 05:27 | Сообщение # 814
был не раз
Сейчас нет на сайте
Подскажите по функциям WinSock.
Как лучше реализовать проверку готовности подключений, т.е. после вызова функции Listen мне в одном потоке необходимо обрабатывать не только подключение клиентов и создание новых сокетов, но и отключение тех кто подал запрос на отключение или отвалился. Нужно не только закрывать сокеты, но и удалять дескрипторы отключенных сокетов из массива. т.к. accept будет ожидать прихода подключений то поток ничего не сделает. Возможно ли применять accept с таймаутом, или проверять буфер на готовых к подключению клиентов?
Почитал про функцию select для подключения она вполне подойдёт, а вот возможность отключения отвалившихся клиентов как проверить? Просто проверять связь с клиентом, и через WSAGetLastError обрабатывать ошибку "Сокет отключен со стороны клиента"?

Как определить отвалившиеся подключения? Посылаются ли какие либо сообщения от операционной системы если клиент отвалился от сокета? Или возможен только вариант с циклической проверкой дескрипторов на состояние работоспособности?

Если надо завершить приложение сервера и закрыть все подключения, нормально будет сразу вызвать WSACleanup или необходимо сначала закрыть все сокеты? Закроются ли сокеты после вызова WSACleanup, и получат ли клиенты како либо уведомление о закрытии подключений, или уведомлять необходимо самому?


Сообщение отредактировал ID_Hacker - Четверг, 10 Января 2013, 08:15
MR_BorgДата: Четверг, 10 Января 2013, 11:28 | Сообщение # 815
участник
Сейчас нет на сайте
Цитата (Archido)
Смотря для чего все это нужно - для покадровой анимации в играх gif обычно никто не использует, а размещают все кадры в одном изображении (атласы). А вообще навскидку с gif умеет работать FreeImage, еще есть некий CxImage, но с ним дел я не имел.

Ну изображения 200х200 или хотя бы 100х100 с анимацией по 20-30 кадров не слишком то большой файл на выходе будет.


Изучаю C++ попутно пишу игру.

Сообщение отредактировал MR_Borg - Четверг, 10 Января 2013, 11:28
Animan2010Дата: Четверг, 10 Января 2013, 22:50 | Сообщение # 816
постоянный участник
Сейчас нет на сайте
Всё никак не могу понять, почему выскакивает ошибка =(
Файл scenemanager.h:

Файл scene.h


Выдает ошибку:
1>c:\users\господин\documents\visual studio 2008\projects\return of space invaders\return of space invaders\scene.h(8) : error C2143: syntax error : missing ';' before '*'

Использую Microsoft Visual C++ 2008


Anima Games
Animan Publishing
SnuuxДата: Четверг, 10 Января 2013, 23:04 | Сообщение # 817
постоянный участник
Сейчас нет на сайте
Разве после этого:
void set_manager(cSceneManager*
new_manager) {_manager = new_manager;}
Не нужно точку с запятой?
Animan2010Дата: Четверг, 10 Января 2013, 23:06 | Сообщение # 818
постоянный участник
Сейчас нет на сайте
Snuux, не нужно

Anima Games
Animan Publishing
SnuuxДата: Четверг, 10 Января 2013, 23:14 | Сообщение # 819
постоянный участник
Сейчас нет на сайте
Ааа, елки... Сижу с телефона не увидел полного кода...
НохчиДата: Пятница, 11 Января 2013, 00:03 | Сообщение # 820
заслуженный участник
Сейчас нет на сайте
Animan2010,
scenemanager.h
Цитата (Animan2010)
#include "scene.h"

здесь scene.h подключена не будет, т.к. директива _SCENE уже определена, а значит класс cScene используется ДО его объявления. Вообще таким образом рекурсивно подключать заголовочные файлы не стоит. Например, внутри scenemanager.h можно было просто объявит cScene.h без реализации, вместо того чтобы подключать scene.h


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Пятница, 11 Января 2013, 00:04
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг