- 1
- 2
char readByffer[102]={0};
std::string dataStrong = readByffer;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+172
char readByffer[102]={0};
std::string dataStrong = readByffer;
+161
//============= 'game' это, собственно, сама игра ==================
void SUPERMARIO::Game()
{
InitForStartGame(0);
//music(NORMAL_MUSIC);
while (GAMECYCLE) //цикл игры
{
//I. построение изображения
MOVEOBJ::TotalAnimatedObject=0;
prMonetsChangePhase();
prPuziri();
prBuildGamePicture();
prShowDebugInfo();
//II. логика игры
BirdsOtSten(); //птички отталкиваются от стен
SkeletonCollect(); //собираем скелетов
prCleverobjRefresh(); //обновляем все у умных объектов
prMarioDeathOnShipah(); //марио гасится на шипах
prForMarioProtected(); //чтобы марио был защищенным
prPrizeCatch(Rick, Prize);//призы не проходят сквозь стенки и марио ловит призы
prBricksNudgePrize(); //кирпичи могут подталкивать призы
prBricksRestore(); //восстанавливаем кирпичи
prTurtleCikAlien(); //черепаха сбивает других чужих
prMonetsTimeEndTimeLiveAndScoreCreate();//надо создать очки когда монетка пропадает
prIfGameOver(); //если конец игры
prBossSalivaDeathMario();// кегли башки гасят марио и не пролетают через стены
prBossSendSaliveAndKeepAtMario();//башка пускает "кегли" и находится вблизи от марио
ArmsKillAlien(); // оружие убивает чужих
prLiftUpDown(); //меняем направление лифта и обновляем его координаты
prMarioDeathOnFlower();//марио гасится на зубастых цветках
prFlowersUpDown(); //поднимаем и опускаем зубастые цветки
MindobjFunctions(Rick, Cleverobj);//различные функции
MindobjFunctions(Rick, CleverAlien);//предусмотренные для Mindobj
prMarioFlyDownCleverobj(); //марио слетает с клевых объектов
prMarioPositionerOnCleverobject();//позиционируем Mario на клевый объект
prMarioRenewXY();//обновляем координаты Mario
//если ноги марио близко к лифту, марио падает
prMarioClammyToLift(); //на лифт и его ускорение приравнять к нулю
prMarioDownsBrickDestroy();//обрушиваем кирпичи под ногами у марио
prArmsCollisionWithWall();//оружие сталкивается со стенами *
prRememberOldMarioCoordinates();//запоминаем старые координаты Mario
prKeyboardProcess(); //обработка НАЖАТИЙ клавиш
GameModesTreat(); //обрабатываем ситуацию загрузки и рестарта уровня режимы игры
if (DoorOpenCounter) DoorOpenCounter--; //чтобы дверь успела открыться
prScrollBricks(); //двигается фон (спрайты воды и огня)
prChangeEffect(); //эффект перехода на другой экран
prShowFPS(); //показать FPS
prSynhronization(); //синхронизируемся (ждем когда таймер станет равным 1)
ShowLevelNumberTimeCounter++;
if (ShowLevelNumberTimeCounter<100)
{
Msg(" УРОВЕНЬ ", 9, MSG_NOUPDATE);
/*if (LevelNumber<40)
{
scr.putNumb(LevelNumber/4+1,1);
scr<< '-';
scr.putNumb(LevelNumber%4+1,1);
}
else
{
scr.putNumb(LevelNumber);
}*/
scr.putNumb(LevelNumber);
}
static int ShowLog=0;
//выводим изображение на экран из DoubleBuffer
if (Keyb[KEY_L] && Keyb[KEY_LEFTCTRL])
{
Keyb^KEY_L;
ShowLog^=1;
}
if (ShowLog)
{
//сжимаем картинку
for(int i=0; i<100; i++)
{
memcpy(scr.DoubleBuffer+i*320, scr.DoubleBuffer+i*2*320,320);
}
scr.rectangle(0,100,320,100,0);
Log.Show();
}
scr.update();
} //конец цикла while
}//конец функции game
Ностальгия...
+153
// ...
if (m_parent->GetState() == Disconnected)
{
CString login;
CString password;
m_login.GetWindowText(login);
m_password.GetWindowText(password);
if (login.IsEmpty()
|| password.IsEmpty())
{
::MessageBox(this->m_hWnd, _T("Please enter login and password"), _T("Input error"),MB_OK);
return;
}
if (CheckString(login)
|| CheckString(password))
{
::MessageBox(this->m_hWnd, _T("You have entered unsupported symbol."), _T("Input error"), MB_OK);
m_login.SetWindowText(login);
m_password.SetWindowText(password);
return;
}
SaveConfig();
}
// ...
bool CheckString(CString& string)
{
bool res = false;
CString checked = _T("<>,!()[]{}~`#$%^&*+=/\\\"|;:'");
for (int i = 0; i < checked.GetLength(); ++i)
{
if (string.Find(checked[i]) != -1)
{
res = true;
string = _T("");
break;
}
}
return res;
}
Проверка допустимых символов
+165
class Exception {
public:
Exception() { }
Exception(const char *fmt, ...) {
va_list argPtr;
va_start(argPtr, fmt);
Str_VSPrintf(desc, sizeof(desc), fmt, argPtr);
va_end(argPtr);
throw(*this);
}
char desc[8096];
};
http://www.gamedev.ru/code/forum/?id=151712#m6
+159
//Я думал тоже так сделать, но иногда для параметра нужны дополнительные аргументы. Например есть operator()(float, int preciseness). С запятыми такого не сделаешь. Я это применил в своих массивах. Можно написать так:
Array<int> arr;
arr.Init(), 5, 7, 65, 99, 267; //Инициализирует массива числами, перечисленными через запятую
//Кстати, сделал такое добавление в массив:
arr.Insert(0), 5, 7, 3; //Добавляет числа вначало массива
arr.Insert($), 888, 25, 76; //Добавляет в конец
arr.Insert($/2), 65, 23; //В середину
//Знак доллара сделал для схожести с языком D. Теперь не надо писать arr.length, можно писать $. Вообще, это должно быть медленнее, но компилятор оптимизирует и по тестам получается так же.
//P. S. В govnokod.ru не заносить.
http://www.gamedev.ru/code/forum/?id=148200&page=6#m76
+161
class CmyBuffaer{};
template< typename TYPE > CmyBuffaer& operator,( CmyBuffaer& buffer, typename TYPE arg);
template<> CmyBuffaer& operator,<double>( CmyBuffaer& buffer, double arg)
{
printf("%f",arg);
return buffer;
}
template<> CmyBuffaer& operator,<const char*>( CmyBuffaer& buffer, const char* arg)
{
printf("%s",arg);
return buffer;
}
template<> CmyBuffaer& operator,<int>( CmyBuffaer& buffer, int arg)
{
printf("%i",arg);
return buffer;
}
//...
CmyBuffaer(),34.5,"+",54,"+\n";
+147
int main(int argc, char* argv[])
{
std::cout<<"Good testing!\n";
system("PAUSE");
return 0;
}
http://www.gamedev.ru/code/forum/?id=151702
+162
#define my__type ((pair<LPVOID, CheckButton_Thread*>*)pvPararn)
my__type -> second -> function( my__type -> first);
http://www.gamedev.ru/code/forum/?id=151690#m11
+165
std::cout << [&i](){return i;}();
И вот ещё одна жертва стандарта. На этот раз она в пасть лезет добровольно.
+167
return parse(
str,
( ( lexeme_d[+alnum_p][assign_a(key)] >> ':' >> lexeme_d[ '"' >> ( *~ch_p('"') )[insert_at_a(mp,key)] >> '"' ] ) % ',' ),
space_p
).full;