АвторСообщение



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 12.07.10 19:01. Заголовок: Прога


Тут есть пргограммизды или кодеры? Если идея принципиально новой игры :3

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 179 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]





Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 21:25. Заголовок: Зачем писать велосип..



 цитата:
Зачем писать велосипед? Python уже есть.


а с какой скоростью на нём будет осуществляться скиннинг модели джоинтов так на сто?

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 28.07.10 21:34. Заголовок: >> а с какой..


>> а с какой скоростью на нём будет осуществляться скиннинг модели джоинтов так на сто?
Профилируйте. Я не знаю.

Вы сперва ответьте на все мои вопросы, прежде чем задавать ваши провокационные.

ADDED:
>> что адекватное и быстрое ядро для игры проще сделать на си
Я сказал что-то против? Я за Си. Этот ЯП у меня не вызывает неприязни.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 21:44. Заголовок: Ладно, вопросы так в..


Ладно, вопросы так вопросы.

1. Зачем объяснять китайцу, что палочками не удобно?

Затем, что в этот раз китайцу попался борщ вместо риса.

2. Вы думаете я так хорошо знаком с технической частью?

Откуда мне это знать???

3. Я сказал что-то против? Я за Си.

Плюсы - это просто расширение возможностей си. Если виртуальные функции не используются, то они не попадут в результат. Если не используются классы, то они тоже не попадут в результат. Если код подходит для си компилятора, то разница нулевая, был ли использован компилятор C или C++. Но в C++ есть то, что поможет убрать сишную избыточность кода, почему бы это не использовать?

4. а с какой скоростью на нём будет осуществляться скиннинг модели джоинтов так на сто?
Скрипт из блендера тратит на это около четверти секунды. Для игры это миллиарды световых лет.

Отворматировал тот примерчик красиво - за что там отрывать руки то?

#include <stdio.h> 
#include <string.h>
#include <winsock2.h>
#include <windows.h>

#define PORT 31337 // Порт, через который идет подключение к серверу....21,80,25,110 и т.п.
#define SERVERADDR "127.0.0.1" // Адрес сервера

int main ( int argc, char* argv [ ] )
{
char buff [ 1024 ] ;
printf ( "TCP Client \n" );

if ( WSAStartup ( 0x202, ( WSADATA * ) &buff [ 0 ] ) )
{
printf ( " WSAStart error %d \n ", WSAGetLastError ( ) );
return -1;
}

SOCKET my_sock ;
my_sock=socket ( AF_INET, SOCK_STREAM, 0 );
if ( my_sock < 0 ) //
{
printf (" Socket ( ) error %d \n ", WSAGetLastError ( ) );
return -1;
}

sockaddr_in dest_addr ;
dest_addr.sin_family=AF_INET; //инет коннектинг
dest_addr.sin_port=htons ( PORT ); //порт
HOSTENT *hst; // хост

if ( inet_addr ( SERVERADDR ) !=INADDR_NONE )
dest_addr.sin_addr=inet_addr ( SERVERADDR) ;
else
if ( hst=gethostbyname ( SERVERADDR ) )
( ( unsigned long * ) &dest_addr.sin_addr ) [ 0 ] = ( ( unsigned long ** ) hst->h_addr_list ) [ 0 ] [ 0 ] ;
else {
printf ( " invalid address %s \n ", SERVERADDR ) ;
closesocket ( my_sock ) ;
WSACleanup ( ) ;
return -1;
}

if (connect ( my_sock, ( sockaddr * ) &dest_addr, sizeof ( dest_addr ) ) )
{
printf (" Connect error %d \n ", WSAGetLastError ( ) );
return -1;
}

printf (" Соединение с %s успешно установлено \n\ Type quit for quit \n\n" , SERVERADDR );
int nsize;
while ( ( nsize = recv ( my_sock, &buff[0], sizeof ( buff ) -1,0 ) ) !=SOCKET_ERROR )
{
buff[ nsize ] =0;
printf ( " S=>C: %s ", buff ) ;
printf ( "S<=C: " ) ;
fgets ( &buff [ 0 ] , sizeof ( buff ) -1, stdin );
if ( !strcmp ( &buff [ 0 ], "quit \n " ) )
{
printf ( " Exit " );
closesocket ( my_sock );
WSACleanup ( ) ;
return 0;
}
send ( my_sock, &buff [ 0 ], nsize, 0 ) ;
}

printf ( " Recv error %d \n", WSAGetLastError ( ) );
closesocket ( my_sock ) ;
WSACleanup ( ) ;
return -1;
}


Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 28.07.10 21:47. Заголовок: Опять таки вы преуве..


Опять таки вы преувеличиваете.
1. Игрушку эту можно написать и на питоне.
2. А таки не так хорошо с ней знаком.
3. Си++ никому не нужное, кроме геймдева, расширение.

А вы все же проигнорировали один из моих вопросов. Ну что ж. Я повторюсь.
Вы знакомы с каким либо ЯП, кроме Си/Си++?

ADDED:
>> char*
>> if ( WSAStartup ( 0x202, ( WSADATA * ) &buff [ 0 ] ) )
Плюсисты опять не знают ставить ли звездочку с пробелом или без. Я же говорю для них не писаны стандарты. Вторая строка выглядит как говно. Я бы расстрелял.

>> ( ( unsigned long * ) &dest_addr.sin_addr ) [ 0 ] = ( ( unsigned long ** ) hst->h_addr_list ) [ 0 ] [ 0 ] ;
Кеп комментирует только определенные участки кода. Хлоп-хлоп. Это тоже по читабельности чуть выше брейнфака.

>> if (connect ( my_sock, ( sockaddr * ) &dest_addr, sizeof ( dest_addr ) ) )
Codestyle такой codestyle. Питонщики негодуют. Даже PEP рекомендует не выделять скобки пробелами ибо это опять же чушь. Как обычно пихать в if выражения дабы снизить читабельности в разы. Fi-i-i-ine!

>> while ( ( nsize = recv ( my_sock, &buff[0], sizeof ( buff ) -1,0 ) ) !=SOCKET_ERROR )
Это к примечанию выше. Такое выражение внутри цикла вызывает желание оторвать руки.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 21:50. Заголовок: тут: http://freed00m..

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 28.07.10 21:57. Заголовок: Вы игнорируете мой в..


Вы игнорируете мой вопрос.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 22:00. Заголовок: PPS. Знакомы и видел..



 цитата:
PPS. Знакомы и видели там те же самые прелести, что и в си.


Нид моар?

Вот, к примеру, ява-скрипт от программистов одной достаточно уважаемой конторы:
http://css.yandex.net/css/images/r10/_images.js<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 28.07.10 22:05. Заголовок: >> Нид моар?..


>> Нид моар?
Я задал вопрос, ожидая конкретного ответа.

>> Вот, к примеру, ява-скрипт от программистов одной достаточно уважаемой конторы:
Слышали про такую штуку как обфускация кода?

http://www.kalinin.ru/programming/cpp/09_07_01.shtml<\/u><\/a> а за 9 лет ничего не изменилось.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 22:11. Заголовок: Слыхали, и даже дела..


Слыхали, и даже делали обратную операцию вручную.

По поводу статьи - лично я придерживаюсь варианта C++ - это си с плюшками, а всяческие идеологии мне не особо интересны.

Ну может я тоже получу сегодня ответы?

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 28.07.10 22:12. Заголовок: >> Ну может ..


>> Ну может я тоже получу сегодня ответы?
А на все ваши вопросы я ответил, вот только вы на мои отвечали изворачиваясь. Ксо жалению сейчас довольно поздно, если будут еще вопросы, я продолжу дискуссию завтра.

ADDED:
Вопросы идеологии в статье не рассматривались. Вы видимо просто невнимательно читали.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 28.07.10 22:22. Заголовок: Конечно же, проблемы..



 цитата:
Конечно же, проблемы, связанные с ошибками в компиляторах, проявляются очень редко. Собственно поэтому можно уже сейчас оценить круг задач, которые лучше решать при помощи C++, чем C (при наличии, конечно же, хороших навыков программирования в обоих языках): это практически все программы, от которых не требуется беспрерывная работа 24 часа в сутки.



Оттуда. Или игра будет крутиться сутками?


 цитата:
Кроме компилятора, большую сложность при программировании на C++ вызывает использование STL. Несомненно, библиотека шаблонов очень удобна и полезна, но это в идеале. К примеру, очень часты случаи, когда смена поставляемой с компилятором STL на STLport, приводит к тому, что программа начинает работать стабильнее.



Про использование STL в играх я уже говорил - оно криво, не надо этого делать.

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

Ошибка два - синглтон мейерса в многопоточных системах. Но существует мнение, что синглтон на самом деле сам по себе - одна большая ошибка...


 цитата:
while ( ( nsize = recv ( my_sock, &buff[0], sizeof ( buff ) -1,0 ) ) !=SOCKET_ERROR )


Внимание - вопрос! Как было бы красивше?

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: fgsfds
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 29.07.10 12:54. Заголовок: >> Оттуда. И..


>> Оттуда. Или игра будет крутиться сутками?
Вырывать абзац из контекста привычный софистский прием. В той статье написано не многозначно, что Страуструп вместо того, чтобы сделать свой язык с блекджеком, начал усложнять уже готовый, да и с процедурным подходом. И сейчас продолжают усложнять. Идея фейловая изначально.

>> Но ведь исключения на самом деле - это именно исключительная ситуация.
Забивать на обработку исключительных ситуаций? Очень смешно. Раз.

>> Я не знаю, зачем некоторые погромисты используют исключения как стандартный способ исполнения программы.
Вам не доводилось встречаться с такими ситуациями, когда ввод неправильный? Или еще что-нибудь испорченно? try/catch в девяти случаях из десяти используется для того, чтобы записать что-то полезное в лог, что может потом пригодится при отлове багов выполнения. Вообще я не понял шутка это сейчас была или нет. Наверное да.

>> Внимание - вопрос! Как было бы красивше?
Никак. Конструкции в Си++ настолько убоги от рождения, что все время будут выглядеть так. Но

  • Цикл сделать в do/while.

  • nsize присваивать какую-то шнягу внутри.

  • -1 и 0 вынести в константы с именами, которые хоть что-то прояснят в этом убогом выражении.

  • SOCKET_ERROR это вообще убийство. Опять же нет, чтобы взять нормальный человеческий try/catch плюсисты сделали какое-то говно. Хорстманн писал, чем нехороши функции, признак ошибки которых есть некое значение возврата.


Нет, я бы еще понял, если бы программист писал это чисто для себя, но это, блджад, пример работы с сотеками! Если бы там были выполнены хотя бы те четыре пункта, что я назвал, было бы хоть капельку читабельнее. И не надо мне сейчас писать, что мол это все криворукие программисты, ибо вы сами подкинули мне этот пример и сами спросили как было бы читабельнее - значит для вас это типичный codestyle. Значит я не ошибался и плюсисты плюют на соглашения и читабельность. Два.

Я искренне боюсь, что у вас Си++ головного мозга. Городская поликлиника имени тов. Керригана и Ричи принимает всех желающих с 8:30 до 16:00.

My heart is broke, but I have some glue.
Help me inhale and mend it with you.
We'll float around and hang out on clouds.
Then we'll come down and have a hangover, have a hangover...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 29.07.10 16:44. Заголовок: Внимание - вопрос! ..



 цитата:
Внимание - вопрос! Как было бы красивше?


Не обязательно в си, в чём угодно, но именно с указанной функцией


 цитата:
Вообще я не понял шутка это сейчас была или нет. Наверное да


Увы.. это была не шутка. У некоторых отдельных товарищей исключение используется вполне штатно...
Вот и сейчас... try-catch - это как бы блок отлова исключений. Функция доступа к сокету может вообще в норме крутиться в вечном цикле, пока наконец не подключится. То есть получаем использование исключений в штатном режиме?


 цитата:
SOCKET_ERROR это вообще убийство. Опять же нет, чтобы взять нормальный человеческий try/catch плюсисты сделали какое-то говно. Хорстманн писал, чем нехороши функции, признак ошибки которых есть некое значение возврата.



Пиши гневное письмо в микрософт - это их творчество.

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: НЕНАВИСТЬ
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 29.07.10 17:27. Заголовок: Я раскрыл ваш секрет..


Я раскрыл ваш секрет. Знаете, люди видят не глазами, но мозгом. Причем наш здравый смысл уберегает наш мозг от того, чего нам видеть не следует. Вот и вас ваш здравый смысл уберегает от прочтения самых колких в вашу сторону абзацев.

>> Увы.. это была не шутка. У некоторых отдельных товарищей исключение используется вполне штатно...
А разве вы не должны, программируя класс, предоставить другим возможность обработать исключение так, как им это хочется? Использовать исключения по назначению как раз то, что нужно.

>> Не обязательно в си, в чём угодно, но именно с указанной функцией
Как я понял в проге реализуется следующее:
 
#!/usr/bin/env python
#-*- coding:utf-8 -*-

from socket import socket
from socket import error as SocketError
from socket import timeout as SocketTimeout

connection = socket() # а это сокет.
connection_props = ('localhost', 10999) # параметры соединения.
buffersize = 1024 # совершенно ненужная константа.

# Не будем забывать, что сервер может забить на нас.
connection.settimeout(10) # 10 секунд должно хватить, да?

# Пытаемся подключиться:
try:
# Следующая строчка собственно и осуществяет подключение.
connection.connect(connection_props)

except SocketError, error:
# Может случиться так, что "Connection Refused".
print error.strerror
exit(1)

# Пытаемся провернуть передачу/прием данных:
try:
while True:
nsize = connection.recv(buffersize)
print 'Мы получили', nsize
nsize = raw_input('Отправляем: ')
if nsize == 'quit':
break
connection.send(nsize)

except SocketTimeout, timeout:
# Такое тоже случается. Вышло время ожидания.
print str(timeout)

except SocketError, error:
# Если соединение было разорванно во время работы.
print error.strerror

finally:
connection.close()


I've felt the hate rise up in me,
Kneel down and cleared the stone of leaves.
I wander out where you can't see.
Inside my shell I wait and bleed...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 29.07.10 17:33. Заголовок: а теперь той же пито..


а теперь той же питоновской функцией делаем проверку возможности подсоединения к порту от 0 до 65536 (сканер портов) и получаем прекрасный пример программы, которая 95% своей жизни проводит внутри исключения, ведь так? Или это хорошо?


 цитата:

nsize = connection.recv(buffersize)
print 'Мы получили', nsize
nsize = raw_input('Отправляем: ')



Как бы nsize в оригинале был размером полученного пакета, но пофиг...

nsize = connection.recv(buffersize) << здесь наверняка происходит выделение памяти под эту самую nsize, хотя в питоне строки константные и там выделение памяти вообще внезапная операция. Будем считать, что connection.recv(buffersize) выделяет каждый раз фиксированную строку по размеру входящего пакета. В сишном коде буфер один на всё и он выделяется только один раз, здесь - в каждом цикле один alloc? Выделение памяти - операция достаточно долгая, поэтому питон и тормозит.


Спасибо: 0 
ПрофильЦитата Ответить



Настроение: НЕНАВИСТЬ
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 29.07.10 18:03. Заголовок: >> а теперь ..


>> а теперь той же питоновской функцией делаем проверку возможности подсоединения к порту от 0 до 65536 (сканер портов) и получаем прекрасный пример программы, которая 95% своей жизни проводит внутри исключения, ведь так? Или это хорошо?
А чем это плохо? В яве это нехорошо, ибо генерация исключения дорогая операция. Ладно. Специально для таких назойливых как вы:
 
#!/usr/bin/env python
#-*- coding:utf-8 -*-

from socket import socket

availports = list()
tmp = socket()
x = 0
while x <= 65536:
if not tmp.connect_ex(('localhost', x)):
availports.append(x)
tmp.close()
tmp = socket()
x = x + 1

for x in availports:
print x

Но это моя быдлоподелка. Уже есть готовые решения:
http://www.coderholic.com/python-port-scanner/<\/u><\/a>
и вариант с многопоточностью:
http://code.activestate.com/recipes/286240-python-portscanners/<\/u><\/a>

>> питон тормозит.
Опять фигню сморозили.

I've felt the hate rise up in me,
Kneel down and cleared the stone of leaves.
I wander out where you can't see.
Inside my shell I wait and bleed...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 29.07.10 18:05. Заголовок: not tmp.connect_ex((..



 цитата:
not tmp.connect_ex(('localhost', x))



Но это же другая функция???

Спасибо: 0 
ПрофильЦитата Ответить



Настроение: НЕНАВИСТЬ
Зарегистрирован: 09.07.10
ссылка на сообщение  Отправлено: 29.07.10 18:06. Заголовок: >> Но это же..


>> Но это же другая функция???
Я поражен вашей внимательностью, сэр.

I've felt the hate rise up in me,
Kneel down and cleared the stone of leaves.
I wander out where you can't see.
Inside my shell I wait and bleed...
Спасибо: 0 
ПрофильЦитата Ответить



Зарегистрирован: 03.06.10
ссылка на сообщение  Отправлено: 29.07.10 18:10. Заголовок: и кстати да, аналога..


и кстати да, аналога того кода тоже с использованием recv из WSA, но более красивого по причине смены ЯП до сих пор нету.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 179 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет