From 87f20fb78ff5bccd0dd73b30005d3ee35b16ed51 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Thu, 28 Jun 2012 12:38:52 +0000 Subject: [PATCH] wwtbam 0.2: rolled-up bug fixed, no clipping while window redrawing, init_heap at start (CleverMouse), support different shin height git-svn-id: svn://kolibrios.org@2830 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/games/whowtbam/trunk/whowtbam.txt | 99 ++++++++++++++++++++++ programs/games/whowtbam/trunk/wwtbam.cpp | 61 ++++++------- 2 files changed, 124 insertions(+), 36 deletions(-) create mode 100644 programs/games/whowtbam/trunk/whowtbam.txt diff --git a/programs/games/whowtbam/trunk/whowtbam.txt b/programs/games/whowtbam/trunk/whowtbam.txt new file mode 100644 index 0000000000..2d8142bfd1 --- /dev/null +++ b/programs/games/whowtbam/trunk/whowtbam.txt @@ -0,0 +1,99 @@ +████████████████████████████████████████████████████████████████████████ +█ █ +█ КТО ХОЧЕТ БЫТЬ МИЛЛИОНЕРОМ? █ +█ █ +█ Игра для ОС Колибри по мотивам популярной телепередачи █ +█ █ +████████████████████████████████████████████████████████████████████████ +█ █ +█ 1. Правила игры █ +█ █ +█ Игра "Кто хочет быть миллионером?" является компьютерной игрой- █ +█ аналогом популярной телепередачи. Ваша задача - ответив на 15 воп- █ +█ росов, выиграть миллион рублей. █ +█ Отвечая на каждый из вопросов, вы зарабатываете определённое коли- █ +█ чество денег: █ +█ █ +█ 1 вопрос - 100 рублей █ +█ 2 вопрос - 200 рублей █ +█ 3 вопрос - 300 рублей █ +█ 4 вопрос - 500 рублей █ +█ 5 вопрос - 1000 рублей █ +█ 6 вопрос - 2000 рублей █ +█ 7 вопрос - 4000 рублей █ +█ 8 вопрос - 8000 рублей █ +█ 9 вопрос - 16000 рублей █ +█ 10 вопрос - 32000 рублей █ +█ 11 вопрос - 64000 рублей █ +█ 12 вопрос - 125000 рублей █ +█ 13 вопрос - 250000 рублей █ +█ 14 вопрос - 500000 рублей █ +█ 15 вопрос - 1000000 рублей █ +█ █ +█ При правильном ответе на вопрос вы переходите к следующему воп- █ +█ росу (или же, если это был 15-й вопрос, вы выигрываете миллион и █ +█ игра заканчивается. █ +█ В любой момент (на любом вопросе) вы можете уйти и забрать деньги █ +█ (нажав клавишу ). █ +█ В случае, если вы ответите неправильно, игра заканчивается и █ +█ деньги сгорают, за исключением 1000 (если вы ответили на 5 вопросов) █ +█ или 32000 (если вы ответили на 10 вопросов). █ +█ У вас есть 3 подсказки, которыми вы можете воспользоваться по од- █ +█ ному разу за игру: "50 на 50", "Подсказка зала" и "Звонок другу". █ +█ █ +█ У Д А Ч Н О Й И Г Р Ы ! ! ! █ +█ █ +████████████████████████████████████████████████████████████████████████ +█ █ +█ 2. Системные требования █ +█ █ +█ Игра написана для операционной системы "Колибри ОС". █ +█ █ +█ Системные требования: █ +█ 1. IBM-PC совместимый персональный компьютер █ +█ 2. Операционная система "Колибри" версии 0.7.1.0 или выше █ +█ █ +█ Стоит особо отметить, что для запуска игры вам потребуется дис- █ +█ трибутив Kolibri OS именно версии 0.7.1.0 или новее, так как игра █ +█ использует возможности ядра системы, отсутствовавшие в предыдущих █ +█ версиях дистрибутива. █ +█ █ +████████████████████████████████████████████████████████████████████████ +█ █ +█ 3. Разработка баз вопросов █ +█ █ +█ Вы можете разработать собственную базу вопросов для игры. █ +█ Файл базы вопросов должен называться "appdata.dat", и располо- █ +█ гаться в одном каталоге с игрой. █ +█ █ +█ Формат файла: █ +█ █ +█ <0x10><Сложность>Текст вопроса<0x01>Вариант ответа<0x02>Вариант █ +█ ответа<0x03>Вариант ответа<0x04>Вариант ответа<0x08><Правильный █ +█ ответ><0x10>Второй вопрос<0x01>.....<0x14>(любые символы в конце █ +█ файла, необходимые для того, чтобы размер файла был кратен 512 █ +█ байтам) █ +█ █ +█ (без символов < и >, а также ( и )) █ +█ █ +█ Сложность вопроса может быть: █ +█ 0x05 - легкий вопрос █ +█ 0x06 - вопрос средней сложности █ +█ 0x07 - сложный вопрос █ +█ █ +█ Номер правильного ответа может быть соответственно: █ +█ 0х01, 0х02, 0х03 или 0х04 █ +█ █ +█ ВНИМАНИЕ: для начала игры в базе ОБЯЗАТЕЛЬНО должно быть не менее █ +█ 5 лёгких, 5 средних и 5 сложных воросов! █ +█ █ +█ Следует заметить, что при игре ответы на вопрос буду случайным об- █ +█ разом перемешаны. █ +█ █ +████████████████████████████████████████████████████████████████████████ +█ █ +█ Разработчик: Dron2004 █ +█ █ +█ Бета-тестирование: Leency █ +█ █ +████████████████████████████████████████████████████████████████████████ diff --git a/programs/games/whowtbam/trunk/wwtbam.cpp b/programs/games/whowtbam/trunk/wwtbam.cpp index 8bca2619f8..65418852e4 100644 --- a/programs/games/whowtbam/trunk/wwtbam.cpp +++ b/programs/games/whowtbam/trunk/wwtbam.cpp @@ -3,8 +3,9 @@ #include #include +#include -char sVersion[] = "Версия 0.1"; +char sVersion[] = "Версия 0.2"; int status=0; @@ -47,8 +48,6 @@ bool drawC = true; bool drawD = true; - - char * tempquestion; char * tempanswerA; char * tempanswerB; @@ -62,11 +61,11 @@ int tempanswerClength=0; int tempanswerDlength=0; - - -const char header[]="Кто хочет быть миллионером для Kolibri OS"; +const char header[]="Кто хочет быть миллионером"; void app_halt(); + + char * filepathname; //╬яЁхфхы хь яєЄ№ ш шь  Їрщыр ё срчющ тюяЁюёют void getFilePathName(){ int lastslashindex=0; @@ -105,16 +104,10 @@ void loadquestion(){ int qcodee; - - int skipsleft; - - regenerate: qcodee=(rtlRand()%questioncount)+1; - - Byte inputbyte[1]={0x00}; @@ -217,7 +210,7 @@ regenerate: tempanswerD = new char[tempanswerDlength+1]; - + // ┬╥╬╨╬╔ ╧╨╬╒╬─: ╘╬╨╠╚╨╙┼╠ ┬ ╧└╠▀╥╚ ┬╬╧╨╬╤ ╚ ┬└╨╚└═╥█ ╬╥┬┼╥└ CKosFile basefile2(filepathname); inputbyte[0]=0x00; @@ -577,31 +570,28 @@ regenD: } } - - delete tempquestion; delete tempanswerA; delete tempanswerB; delete tempanswerC; delete tempanswerD; - - - - - - - - - - } + + void draw_window(void){ //╨шёєхь юъэю + sProcessInfo sPI; + kos_WindowRedrawStatus(1); - kos_DefineAndDrawWindow(10,10,620,200,0x34, 0xDDDDFF, 0,0, (Dword)header); + kos_DefineAndDrawWindow(10,10,619,179+kos_GetSkinHeight(),0x74, 0xDDDDFF, 0,0, (Dword)header); + kos_WindowRedrawStatus(2); + kos_ProcessInfo( &sPI ); + if (sPI.rawData[70]&0x04) return; //эшўхую эх фхырЄ№ хёыш юъэю ёїыюяэєЄю т чруюыютюъ + + if (status==0){ //╠хэ■ - kos_DrawBar(0,0,610,174,0xFFFFBB); + kos_DrawBar(0,0,610,175,0xFFFFBB); kos_WriteTextToWindow (10,10,0x80,0x000000, "Кто хочет быть миллионером?", 3); kos_WriteTextToWindow (10,25,0x80,0x000000, sVersion, 3); @@ -614,7 +604,7 @@ void draw_window(void){ // } if (status==1){ //╚уЁр - kos_DrawBar(0,0,610,174,0xEEEEFF); + kos_DrawBar(0,0,610,175,0xEEEEFF); kos_WriteTextToWindow (10,10,0x0,0x000000, question, questionlength-1); @@ -650,24 +640,24 @@ void draw_window(void){ // } if (status==2){ //╬ъэю "▌Єю - яЁртшы№э√щ юЄтхЄ" - kos_DrawBar(0,0,610,174,0xDDFFDD); + kos_DrawBar(0,0,610,175,0xDDFFDD); kos_WriteTextToWindow (10,10,0x80,0x000000, "Да, это правильный ответ!", 0); kos_WriteTextToWindow (10,150,0x80,0x000000, " - продолжить", 0); } if (status==3){ //┬√ т√шуЁрыш ьшыышюэ, юфэръю ц!!! - kos_DrawBar(0,0,610,174,0x00FF00); + kos_DrawBar(0,0,610,175,0x00FF00); kos_WriteTextToWindow (10,10,0x80,0x000000, "Вы выиграли миллион!!!", 0); kos_WriteTextToWindow (10,150,0x80,0x000000, " - выход", 0); } if (status==4){ //╟тюэюъ фЁєує - kos_DrawBar(0,0,610,174,0xAAFFFF); + kos_DrawBar(0,0,610,175,0xAAFFFF); kos_WriteTextToWindow (10,10,0x80,0x000000, "Друг советует вам ответ", 0); kos_WriteTextToWindow (165,10,0x80,0x000000, friendsAdvice, 0); kos_WriteTextToWindow (10,150,0x80,0x000000, " - продолжить", 0); } if (status==5){ //╧юфёърчър чрыр - kos_DrawBar(0,0,610,174,0xAAFFFF); + kos_DrawBar(0,0,610,175,0xAAFFFF); kos_WriteTextToWindow (10,10,0x80,0x000000, "Мнение аудитории распределилось так:", 0); if (drawA==true){ kos_WriteTextToWindow (10,30,0x80,0x000000, "Ответ A: ", 0); @@ -698,13 +688,13 @@ void draw_window(void){ // } if (status==6){ //┬√ чрсЁрыш фхэ№уш ;-) - kos_DrawBar(0,0,610,174,0xBBFFBB); + kos_DrawBar(0,0,610,175,0xBBFFBB); kos_WriteTextToWindow (10,10,0x80,0x000000, "Вы забрали деньги и ушли. Ваш выигрыш составил:", 0); kos_WriteTextToWindow (10,20,0x80,0x000000, summs[currentquestion-1], 0); kos_WriteTextToWindow (10,150,0x80,0x000000, " - выход", 0); } if (status==-1){ //┬√ ю°шсышё№ :-( - kos_DrawBar(0,0,610,174,0xFF8888); + kos_DrawBar(0,0,610,175,0xFF8888); kos_WriteTextToWindow (10,10,0x80,0x000000, "К сожалению, вы ошиблись... Правильный ответ -", 0); switch (correctanswer){ @@ -737,8 +727,6 @@ void draw_window(void){ // kos_WriteTextToWindow (10,150,0x80,0x000000, " - выход", 0); } - kos_WindowRedrawStatus(2); - } @@ -970,6 +958,7 @@ void call_zal(){ // void kos_Main(){ rtlSrand(kos_GetSystemClock() / 10000); + kos_InitHeap(); getFilePathName(); prepareFileData(); draw_window();