From c876fb5ca5a0fb0710bb3333d1c0196df98aaccf Mon Sep 17 00:00:00 2001 From: Albom Date: Mon, 4 Jun 2012 08:11:24 +0000 Subject: [PATCH] KOX: window with skin, system colors for button and text git-svn-id: svn://kolibrios.org@2734 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/games/kox/trunk/data.inc | 6 +++- programs/games/kox/trunk/kox.asm | 2 ++ programs/games/kox/trunk/kox.txt | 11 +++++++ programs/games/kox/trunk/main.inc | 53 ++++++++++++++----------------- 4 files changed, 42 insertions(+), 30 deletions(-) diff --git a/programs/games/kox/trunk/data.inc b/programs/games/kox/trunk/data.inc index 8cd2926d05..e8b9ec224b 100644 --- a/programs/games/kox/trunk/data.inc +++ b/programs/games/kox/trunk/data.inc @@ -7,7 +7,7 @@ macro DATA_SECTION ; ДАННЫЕ ПРОГРАММЫ ;----------------------------------------------------------------------------- lootxt: db 'oops! - Looser...' ; los -text: db 'KOX v0.003 [ESC] - quit' ; winheader string +text: texts: db 'Congratulations! You are winner.' ; in window win textend: db 'New' ;button id=200 px: dw 50 ;x,y - @@ -63,4 +63,8 @@ idx: dd 0 ;N cell dw 001010000b,2 dw 001000100b,4 ;diag +caption db 'KOX v0.1', 0 + +colors rd 10 + } diff --git a/programs/games/kox/trunk/kox.asm b/programs/games/kox/trunk/kox.asm index df54cc5a1e..76059dfdd1 100644 --- a/programs/games/kox/trunk/kox.asm +++ b/programs/games/kox/trunk/kox.asm @@ -1,6 +1,8 @@ ;************************************************ ;* X-0-X / Kolibri OS / ;************************** 17/10/2007 ********** +;************************** 04/06/2012 ********** + include 'main.inc' include 'data.inc' include 'macs.inc' diff --git a/programs/games/kox/trunk/kox.txt b/programs/games/kox/trunk/kox.txt index 36d2f85de3..17241ec8c7 100644 --- a/programs/games/kox/trunk/kox.txt +++ b/programs/games/kox/trunk/kox.txt @@ -1,3 +1,14 @@ + +Kox v0.1 +---------------- + Теперь окно со скином а для кнопки и текста используются системные цвета. + +== 04/06/2012 == + + + + + Kox v0.003 ---------------- Крестики-нолики в комментариях не нуждаются. diff --git a/programs/games/kox/trunk/main.inc b/programs/games/kox/trunk/main.inc index 89597c786b..a781f93c5f 100644 --- a/programs/games/kox/trunk/main.inc +++ b/programs/games/kox/trunk/main.inc @@ -7,6 +7,16 @@ cW equ cWHITE macro main_loop { +; Получить стандартные цвета окон +;======================================== +mov eax, 48 +mov ebx, 3 +mov ecx, colors +mov edx, 40 +int 0x40 + + + ; функция отрисовки окна ;======================================== draw_window: @@ -17,18 +27,12 @@ draw_window: mov eax,0 ; функция 0: определить и вывести окно mov ebx,100*65536+250 ; [x начальный] *65536 + [x размер] mov ecx,ebx ;,100*65536+250 ; [y начальный] *65536 + [y размер] - mov edx,0x02FFFFFF + mov edx, 0x34FFFFFF - mov esi,0x808899AA ; цвет заголовка RRGGBB - mov edi,0xFFAAcc ; цвет рамки RRGGBB - int 0x40 - ; НАДПИСЬ в заголовке KOX v0.001 - mov eax,4 ; функция 4: написать текст в окне - mov ebx,8*65536+8 ; [x начальный] *65536 + [y начальный] - mov ecx,0x00224422 ; цвет текста RRGGBB - mov edx,text ; указатель на начало текста - mov esi,texts-text ; длина текста в байтах + mov esi, 0x808899AA ; цвет заголовка RRGGBB + mov edi, caption ; заголовок int 0x40 + ;-----------------------------------#----------------------------------------- ; SCENE OF GAME - PLAY YARD - BOARD - DESK - PLAYING FIELD ;--------------- @@ -37,23 +41,16 @@ draw_window: ; ----КНОПКИ---- ;------------------------------------------------------------------------------- ;buttons: - mov eax,8 ; функция 8: определить и вывести кнопку - mov ebx,230*65536+12 ; [x начальный] *65536 + [x размер] - mov ecx,5*65536+12 ; [y начальный] *65536 + [y размер] - mov edx,100 ; идентификатор кнопки =100 - mov esi,0xFF6611 ; цвет кнопки RRGGBB - int 0x40 ; ===КНОПКА ЗАКРЫТИЯ ОКНА=== -;-------------------------------------------- mov eax,8 ; - mov ebx,200*65536+35 ; ; - mov ecx,25*65536+20 ; + mov ebx,200*65536+35 ; + mov ecx,15*65536+20 ; mov edx,200 ;== NEW GAME == - mov esi,0xCC66CC + mov esi, [colors+0x18] int 0x40 ;-------------------------------------------- mov eax,4 ; написать текст на кнопке NEW - mov ebx,210*65536+30 - mov ecx,cB + mov ebx,210*65536+20 + mov ecx,[colors+0x1C] mov edx,textend mov esi,3 int 0x40 @@ -88,8 +85,6 @@ redraw: key: mov eax,2 ; считываем код нажатой клавиши. Возвращен в ah. int 0x40 ; Клавиша должна быть прочитана для очистки - cmp ah,27 - je clos0 ; exit on ESC jmp event_wait ; возврат к event_wait button: mov eax,17 ; считываем идентификатор нажатой кнопки @@ -97,7 +92,7 @@ button: ;------------------------------------------------------------------------------- ; смотрим, какая кнопка была нажата и соответствующим образом реагируем. ;------------------------------------------------------------------------------- - cmp ah,100 ; кнопка с id=100("закрыть")? + cmp ah, 1 ; кнопка с id=1 ("закрыть")? jne noclose ; clos0: ; mov eax,-1 ; функция -1: завершить программу @@ -220,7 +215,7 @@ button: mov eax,4 ; функ 4: написать текст 'WINNER!' mov ebx,18*65536+215 ; [x нач] *65536 + [y нач] - mov ecx,0x10FF22FF ; цвет текста RRGGBB + mov ecx, [colors+0x20] ; цвет текста RRGGBB mov edx,texts ; указатель на начало текста mov esi,textend-texts ; длина текста в байтах int 0x40 ; @@ -251,8 +246,8 @@ button: @@: mov dword[idx],esi ;сохраним в idx ;esi=0..8 - index - call o_com ;проверка 24хъ комбинаций XX0 - call x_com ;проверка 24хъ комбинаций 00* + call o_com ;проверка 24х комбинаций XX0 + call x_com ;проверка 24х комбинаций 00* mov esi,dword[idx] ;idx-индекс клетки(0..8) куда ход shl esi,2 ; esi*4 - поле состоит из записей по dword @@ -278,7 +273,7 @@ button: mov eax,4 ; функ 4: написать текст 'LOOSER!' mov ebx,48*65536+215 ; [x нач] *65536 + [y нач] - mov ecx,0x10FF22FF ; цвет текста RRGGBB + mov ecx, [colors+0x20] ; цвет текста RRGGBB mov edx,lootxt ; указатель на начало текста mov esi,text-lootxt ; длина текста в байтах int 0x40 ;