Joc funcional, rebot dels ORNIs no original
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.exe
|
||||
.vscode/*
|
||||
@@ -183,6 +183,7 @@ byte llig(word x, word y) {
|
||||
case 6: return (virt[y*80+(x>>3)] & 0x02) >> 1; break;
|
||||
case 7: return virt[y*80+(x>>3)] & 0x01; break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void posavga(word x, word y, byte color) {
|
||||
@@ -256,7 +257,7 @@ boolean linea(word x1, word y1, word x2, word y2, word color) {
|
||||
integer xs = x2-x1, ys = y2-y1;
|
||||
|
||||
integer xm = sign(xs), ym = sign(ys);
|
||||
integer xs = fabs(xs), ys = fabs(ys);
|
||||
xs = fabs(xs); ys = fabs(ys);
|
||||
if (llig(x,y)==1) col++;
|
||||
posa(x,y,color);
|
||||
|
||||
@@ -317,18 +318,23 @@ void rota_pol(poligon pol, real angul, byte color) {
|
||||
|
||||
void mou_orni(poligon &orni) {
|
||||
orni.angle = orni.angle/*+(random(256)/512)*(random(3)-1)*/;
|
||||
real dy = round(orni.velocitat*sin(orni.angle-pi/2))+orni.centre.y;
|
||||
real dx = round(orni.velocitat*cos(orni.angle-pi/2))+orni.centre.x;
|
||||
real dy = round(orni.velocitat*sin(orni.angle-pi/2.0))+orni.centre.y;
|
||||
real dx = round(orni.velocitat*cos(orni.angle-pi/2.0))+orni.centre.x;
|
||||
if ((dy>marge_dalt) && (dy<marge_baix)) {
|
||||
orni.centre.y = round(dy);
|
||||
} else {
|
||||
orni.angle = orni.angle+(random(256)/512)*(random(3)-1);
|
||||
// NOTA3: No he pogut reproduir el moviment dels ORNIs amb el codi que hi havia en l'original. Si el fique talqual no va be.
|
||||
// (els ORNIs se queden atascats a les vores). El codi original es la linea comentada despres de la actual. Seguiré investigant...
|
||||
orni.angle = orni.angle+(pi*(random(200)/100));
|
||||
//orni.angle = orni.angle+(random(256)/512)*(random(3)-1);
|
||||
}
|
||||
|
||||
if ((dx>marge_esq) && (dx<marge_dret)) {
|
||||
orni.centre.x = round(dx);
|
||||
} else {
|
||||
orni.angle = orni.angle+(random(256)/512)*(random(3)-1);
|
||||
// vore NOTA3
|
||||
orni.angle = orni.angle+(pi*(random(200)/100));
|
||||
//orni.angle = orni.angle+(random(256)/512)*(random(3)-1);
|
||||
}
|
||||
orni.rotacio = orni.rotacio+orni.drotacio;
|
||||
}
|
||||
@@ -395,7 +401,7 @@ void tocado() {
|
||||
if (itocado>250) itocado=0;
|
||||
}
|
||||
|
||||
int main(int argc, char argv[]) {
|
||||
int main(int argc, char *argv[]) {
|
||||
randomize();
|
||||
//getmem(virt,38400); virt es un array estatic, no fa falta reservar memòria
|
||||
itocado = 0;
|
||||
@@ -413,12 +419,12 @@ int main(int argc, char argv[]) {
|
||||
do {
|
||||
clsvirt();
|
||||
|
||||
if (teclapuls(KEYarrowright)) nau.angle += 0.157079632;
|
||||
if (teclapuls(KEYarrowleft)) nau.angle -= 0.157079632;
|
||||
if (teclapuls(KEYarrowup)) {
|
||||
if (teclapuls(keyArrowRight)) nau.angle += 0.157079632;
|
||||
if (teclapuls(keyArrowLeft)) nau.angle -= 0.157079632;
|
||||
if (teclapuls(keyArrowUp)) {
|
||||
if (nau.velocitat<velocitat_max) nau.velocitat += 0.2;
|
||||
}
|
||||
if (teclapuls(KEYspace) && (!bales[1].esta)) {
|
||||
if (teclapuls(keySpace) && (!bales[1].esta)) {
|
||||
bales[1].esta = true;
|
||||
bales[1].centre.x = nau.centre.x;
|
||||
bales[1].centre.y = nau.centre.y;
|
||||
@@ -461,14 +467,16 @@ int main(int argc, char argv[]) {
|
||||
mou_bales(bales[1]);
|
||||
rota_pol(bales[1],0,1);
|
||||
}
|
||||
waitretrace();
|
||||
// fiquem "volca" i "waitretrace" al reves, ja que waitretrace fa tota la faena de enviar-ho a sdl
|
||||
volca();
|
||||
waitretrace();
|
||||
|
||||
/* if aux=1 then begin {gotoxy(0,0);write('tocado')tocado;delay(200);end;*/
|
||||
gotoxy(50,24);
|
||||
write("¸ Visente i Sergi");
|
||||
gotoxy(50,25);
|
||||
write("áETA 2.2 2/6/99");
|
||||
} while (!teclapuls(keyesc));
|
||||
} while (!teclapuls(keyEsc) && !shouldexit() ); // afegim el shouldexit, ja que si tanquen la finestra, deuriem eixir
|
||||
desinstalarkb();
|
||||
ang = 0;
|
||||
do {
|
||||
@@ -476,7 +484,7 @@ int main(int argc, char argv[]) {
|
||||
rota_pol(pol,ang,0);
|
||||
ang += 0.031415;
|
||||
rota_pol(pol,ang,1);
|
||||
} while (!keypressed());
|
||||
} while (!keypressed() && !shouldexit() );
|
||||
text();
|
||||
return 0;
|
||||
}
|
||||
29
crt.h
29
crt.h
@@ -21,19 +21,20 @@ SDL_Event sdlEvent;
|
||||
|
||||
Uint32 *pixels;
|
||||
int pitch;
|
||||
bool eixir = false;
|
||||
|
||||
void randomize() {
|
||||
srand(SDL_GetTicks());
|
||||
}
|
||||
|
||||
int random(int x) {
|
||||
return rand()%x;
|
||||
float random(int x) {
|
||||
return float(rand() % x);
|
||||
}
|
||||
|
||||
void mcga() {
|
||||
SDL_Init(SDL_INIT_EVERYTHING);
|
||||
sdlWindow = SDL_CreateWindow("Asteroids", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);
|
||||
sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, 0);
|
||||
sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_PRESENTVSYNC);
|
||||
sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, 640, 480);
|
||||
}
|
||||
|
||||
@@ -41,22 +42,24 @@ void text() {
|
||||
SDL_Quit();
|
||||
}
|
||||
|
||||
bool shouldexit() { return eixir; }
|
||||
|
||||
void waitretrace() {
|
||||
while (!SDL_PollEvent(&sdlEvent)) {
|
||||
if (sdlEvent.type == SDL_QUIT) { /*Ja vorem*/ }
|
||||
while (SDL_PollEvent(&sdlEvent)) {
|
||||
if (sdlEvent.type == SDL_QUIT) { eixir = true; }
|
||||
}
|
||||
SDL_LockTexture(sdlTexture, NULL, (void**)&pixels, &pitch);
|
||||
int pos=0;
|
||||
for (int y=0; y<480;y++) {
|
||||
for (int x=0; x<80;x++) {
|
||||
pixels[pos++] = ((video[y*480+x]>>7)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>6)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>5)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>4)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>3)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>2)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x]>>1)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*480+x] )&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>7)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>6)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>5)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>4)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>3)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>2)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x]>>1)&1)?0xffffffff:0x000000ff;
|
||||
pixels[pos++] = ((video[y*80+x] )&1)?0xffffffff:0x000000ff;
|
||||
}
|
||||
}
|
||||
SDL_UnlockTexture(sdlTexture);
|
||||
|
||||
296
keyboard.h
296
keyboard.h
@@ -24,105 +24,105 @@ interface
|
||||
|
||||
#define keySysReq SDL_SCANCODE_SYSREQ
|
||||
#define keyCapsLock SDL_SCANCODE_CAPSLOCK
|
||||
#define keyNumLock 0x45
|
||||
#define keyScrollLock 0x46
|
||||
#define keyLeftCtrl 0x1D
|
||||
#define keyLeftAlt 0x38
|
||||
#define keyLeftShift 0x2A
|
||||
#define keyRightCtrl 0x9D
|
||||
#define keyAltGr 0xB8
|
||||
#define keyRightShift 0x36
|
||||
#define keyEsc 0x01
|
||||
#define keyBackspace 0x0E
|
||||
#define keyEnter 0x1C
|
||||
#define keySpace 0x39
|
||||
#define keyTab 0x0F
|
||||
#define keyF1 0x3B
|
||||
#define keyF2 0x3C
|
||||
#define keyF3 0x3D
|
||||
#define keyF4 0x3E
|
||||
#define keyF5 0x3F
|
||||
#define keyF6 0x40
|
||||
#define keyF7 0x41
|
||||
#define keyF8 0x42
|
||||
#define keyF9 0x43
|
||||
#define keyF10 0x44
|
||||
#define keyF11 0x57
|
||||
#define keyF12 0x58
|
||||
#define keyA 0x1E
|
||||
#define keyB 0x30
|
||||
#define keyC 0x2E
|
||||
#define keyD 0x20
|
||||
#define keyE 0x12
|
||||
#define keyF 0x21
|
||||
#define keyG 0x22
|
||||
#define keyH 0x23
|
||||
#define keyI 0x17
|
||||
#define keyJ 0x24
|
||||
#define keyK 0x25
|
||||
#define keyL 0x26
|
||||
#define keyM 0x32
|
||||
#define keyN 0x31
|
||||
#define keyO 0x18
|
||||
#define keyP 0x19
|
||||
#define keyQ 0x10
|
||||
#define keyR 0x13
|
||||
#define keyS 0x1F
|
||||
#define keyT 0x14
|
||||
#define keyU 0x16
|
||||
#define keyV 0x2F
|
||||
#define keyW 0x11
|
||||
#define keyX 0x2D
|
||||
#define keyY 0x15
|
||||
#define keyZ 0x2C
|
||||
#define key1 0x02
|
||||
#define key2 0x03
|
||||
#define key3 0x04
|
||||
#define key4 0x05
|
||||
#define key5 0x06
|
||||
#define key6 0x07
|
||||
#define key7 0x08
|
||||
#define key8 0x09
|
||||
#define key9 0x0A
|
||||
#define key0 0x0B
|
||||
#define keyMinus 0x0C
|
||||
#define keyEqual 0x0D
|
||||
#define keyLBracket 0x1A
|
||||
#define keyRBracket 0x1B
|
||||
#define keySemicolon 0x27
|
||||
#define keyTick 0x28
|
||||
#define keyApostrophe 0x29
|
||||
#define keyBackslash 0x2B
|
||||
#define keyComma 0x33
|
||||
#define keyPeriod 0x34
|
||||
#define keySlash 0x35
|
||||
#define keyInsert 0xD2
|
||||
#define keyDelete 0xD3
|
||||
#define keyHome 0xC7
|
||||
#define keyEnd 0xCF
|
||||
#define keyPageUp 0xC9
|
||||
#define keyArrowLeft 0xCB
|
||||
#define keyArrowRight 0xCD
|
||||
#define keyArrowUp 0xC8
|
||||
#define keyArrowDown 0xD0
|
||||
#define keyKeypad0 0x52
|
||||
#define keyKeypad1 0x4F
|
||||
#define keyKeypad2 0x50
|
||||
#define keyKeypad3 0x51
|
||||
#define keyKeypad4 0x4B
|
||||
#define keyKeypad5 0x4C
|
||||
#define keyKeypad6 0x4D
|
||||
#define keyKeypad7 0x47
|
||||
#define keyKeypad8 0x48
|
||||
#define keyKeypad9 0x49
|
||||
#define keyKeypadComma 0x53
|
||||
#define keyKeypadStar 0x37
|
||||
#define keyKeypadMinus 0x4A
|
||||
#define keyKeypadPlus 0x4E
|
||||
#define keyKeypadEnter 0x9C
|
||||
#define keyCtrlPrtScr 0xB7
|
||||
#define keyShiftPrtScr 0xB7
|
||||
#define keyKeypadSlash 0xB5
|
||||
#define keyNumLock SDL_SCANCODE_NUMLOCKCLEAR
|
||||
#define keyScrollLock SDL_SCANCODE_SCROLLLOCK
|
||||
#define keyLeftCtrl SDL_SCANCODE_LCTRL
|
||||
#define keyLeftAlt SDL_SCANCODE_LALT
|
||||
#define keyLeftShift SDL_SCANCODE_LSHIFT
|
||||
#define keyRightCtrl SDL_SCANCODE_RCTRL
|
||||
#define keyAltGr SDL_SCANCODE_RALT
|
||||
#define keyRightShift SDL_SCANCODE_RSHIFT
|
||||
#define keyEsc SDL_SCANCODE_ESCAPE
|
||||
#define keyBackspace SDL_SCANCODE_BACKSPACE
|
||||
#define keyEnter SDL_SCANCODE_RETURN
|
||||
#define keySpace SDL_SCANCODE_SPACE
|
||||
#define keyTab SDL_SCANCODE_TAB
|
||||
#define keyF1 SDL_SCANCODE_F1
|
||||
#define keyF2 SDL_SCANCODE_F2
|
||||
#define keyF3 SDL_SCANCODE_F3
|
||||
#define keyF4 SDL_SCANCODE_F4
|
||||
#define keyF5 SDL_SCANCODE_F5
|
||||
#define keyF6 SDL_SCANCODE_F6
|
||||
#define keyF7 SDL_SCANCODE_F7
|
||||
#define keyF8 SDL_SCANCODE_F8
|
||||
#define keyF9 SDL_SCANCODE_F9
|
||||
#define keyF10 SDL_SCANCODE_F10
|
||||
#define keyF11 SDL_SCANCODE_F11
|
||||
#define keyF12 SDL_SCANCODE_F12
|
||||
#define keyA SDL_SCANCODE_A
|
||||
#define keyB SDL_SCANCODE_B
|
||||
#define keyC SDL_SCANCODE_C
|
||||
#define keyD SDL_SCANCODE_D
|
||||
#define keyE SDL_SCANCODE_E
|
||||
#define keyF SDL_SCANCODE_F
|
||||
#define keyG SDL_SCANCODE_G
|
||||
#define keyH SDL_SCANCODE_H
|
||||
#define keyI SDL_SCANCODE_I
|
||||
#define keyJ SDL_SCANCODE_J
|
||||
#define keyK SDL_SCANCODE_K
|
||||
#define keyL SDL_SCANCODE_L
|
||||
#define keyM SDL_SCANCODE_M
|
||||
#define keyN SDL_SCANCODE_N
|
||||
#define keyO SDL_SCANCODE_O
|
||||
#define keyP SDL_SCANCODE_P
|
||||
#define keyQ SDL_SCANCODE_Q
|
||||
#define keyR SDL_SCANCODE_R
|
||||
#define keyS SDL_SCANCODE_S
|
||||
#define keyT SDL_SCANCODE_T
|
||||
#define keyU SDL_SCANCODE_U
|
||||
#define keyV SDL_SCANCODE_V
|
||||
#define keyW SDL_SCANCODE_W
|
||||
#define keyX SDL_SCANCODE_X
|
||||
#define keyY SDL_SCANCODE_Y
|
||||
#define keyZ SDL_SCANCODE_Z
|
||||
#define key1 SDL_SCANCODE_1
|
||||
#define key2 SDL_SCANCODE_2
|
||||
#define key3 SDL_SCANCODE_3
|
||||
#define key4 SDL_SCANCODE_4
|
||||
#define key5 SDL_SCANCODE_5
|
||||
#define key6 SDL_SCANCODE_6
|
||||
#define key7 SDL_SCANCODE_7
|
||||
#define key8 SDL_SCANCODE_8
|
||||
#define key9 SDL_SCANCODE_9
|
||||
#define key0 SDL_SCANCODE_0
|
||||
#define keyMinus SDL_SCANCODE_MINUS
|
||||
#define keyEqual SDL_SCANCODE_EQUALS
|
||||
#define keyLBracket SDL_SCANCODE_LEFTBRACKET
|
||||
#define keyRBracket SDL_SCANCODE_RIGHTBRACKET
|
||||
#define keySemicolon SDL_SCANCODE_SEMICOLON
|
||||
#define keyTick SDL_SCANCODE_GRAVE
|
||||
#define keyApostrophe SDL_SCANCODE_APOSTROPHE
|
||||
#define keyBackslash SDL_SCANCODE_BACKSLASH
|
||||
#define keyComma SDL_SCANCODE_COMMA
|
||||
#define keyPeriod SDL_SCANCODE_PERIOD
|
||||
#define keySlash SDL_SCANCODE_SLASH
|
||||
#define keyInsert SDL_SCANCODE_INSERT
|
||||
#define keyDelete SDL_SCANCODE_DELETE
|
||||
#define keyHome SDL_SCANCODE_HOME
|
||||
#define keyEnd SDL_SCANCODE_END
|
||||
#define keyPageUp SDL_SCANCODE_PAGEUP
|
||||
#define keyArrowLeft SDL_SCANCODE_LEFT
|
||||
#define keyArrowRight SDL_SCANCODE_RIGHT
|
||||
#define keyArrowUp SDL_SCANCODE_UP
|
||||
#define keyArrowDown SDL_SCANCODE_DOWN
|
||||
#define keyKeypad0 SDL_SCANCODE_KP_0
|
||||
#define keyKeypad1 SDL_SCANCODE_KP_1
|
||||
#define keyKeypad2 SDL_SCANCODE_KP_2
|
||||
#define keyKeypad3 SDL_SCANCODE_KP_3
|
||||
#define keyKeypad4 SDL_SCANCODE_KP_4
|
||||
#define keyKeypad5 SDL_SCANCODE_KP_5
|
||||
#define keyKeypad6 SDL_SCANCODE_KP_6
|
||||
#define keyKeypad7 SDL_SCANCODE_KP_7
|
||||
#define keyKeypad8 SDL_SCANCODE_KP_8
|
||||
#define keyKeypad9 SDL_SCANCODE_KP_9
|
||||
#define keyKeypadComma SDL_SCANCODE_KP_COMMA
|
||||
#define keyKeypadStar SDL_SCANCODE_KP_MULTIPLY
|
||||
#define keyKeypadMinus SDL_SCANCODE_KP_MINUS
|
||||
#define keyKeypadPlus SDL_SCANCODE_KP_PLUS
|
||||
#define keyKeypadEnter SDL_SCANCODE_KP_ENTER
|
||||
#define keyCtrlPrtScr SDL_SCANCODE_PRINTSCREEN
|
||||
#define keyShiftPrtScr SDL_SCANCODE_PAUSE
|
||||
#define keyKeypadSlash SDL_SCANCODE_KP_DIVIDE
|
||||
|
||||
const char *keyNames[256] {
|
||||
/* $00 */ NULL, "Esc", "1", "2", "3", "4", "5", "6",
|
||||
@@ -150,7 +150,7 @@ const char *keyNames[256] {
|
||||
/* $F0 */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
procedure InstalarKb;
|
||||
procedure DesinstalarKb;
|
||||
function TeclaPuls( b : byte ) : Boolean;
|
||||
@@ -198,81 +198,29 @@ asm
|
||||
sti
|
||||
end;
|
||||
{$F-}
|
||||
*/
|
||||
|
||||
const Uint8 *uKeys;
|
||||
|
||||
void instalarkb() {
|
||||
uKeys = SDL_GetKeyboardState(NULL);
|
||||
}
|
||||
|
||||
void desinstalarkb() {
|
||||
// Res que vore ací, dispersensé...
|
||||
}
|
||||
|
||||
|
||||
procedure InstalarKb;
|
||||
begin
|
||||
GetIntVec( $09, uOldInt9); { save old location of INT 09 handler }
|
||||
SetIntVec( $09, Addr( NewInt9)); { point to new routine }
|
||||
FillChar( uKeys, SizeOf( uKeys), 0); { clear the keys array }
|
||||
end;
|
||||
bool teclapuls( unsigned char b ) {
|
||||
return uKeys[b] == 1;
|
||||
}
|
||||
|
||||
bool keypressed() {
|
||||
for (int i=0;i<256;++i) if (uKeys[i]==1) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
procedure DesinstalarKb;
|
||||
begin
|
||||
SetIntVec( $09, uOldInt9); { point back to original routine }
|
||||
uOldInt9 := nil;
|
||||
end;
|
||||
|
||||
|
||||
function TeclaPuls( b : byte ) : Boolean;
|
||||
begin
|
||||
TeclaPuls := uKeys[b];
|
||||
end;
|
||||
|
||||
|
||||
function QTeclaPuls : Boolean;
|
||||
var b : Integer;
|
||||
begin
|
||||
QTeclaPuls := True;
|
||||
for b := 0 to 255 do
|
||||
if uKeys[b] and (keyNames[b] <> nil) then
|
||||
Exit;
|
||||
QTeclaPuls := False;
|
||||
end;
|
||||
|
||||
|
||||
function AgarrarTecla : Byte;
|
||||
var b : Integer;
|
||||
begin
|
||||
AgarrarTecla := 0;
|
||||
for b := 1 to 255 do
|
||||
if uKeys[b] and (keyNames[b] <> nil) then
|
||||
begin
|
||||
AgarrarTecla := b;
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure BorrarKb;
|
||||
begin
|
||||
FillChar( uKeys, SizeOf( uKeys), 0); { clear the keys array }
|
||||
end;
|
||||
|
||||
|
||||
{$F+}
|
||||
procedure CleanUp;
|
||||
begin
|
||||
ExitProc := uExitProc;
|
||||
if uOldInt9 <> nil then
|
||||
DesinstalarKb;
|
||||
end;
|
||||
|
||||
procedure EscriuKb;
|
||||
var b:byte;
|
||||
begin
|
||||
for b := 0 to 255 do
|
||||
if uKeys[b] and (keyNames[b] <> nil) then
|
||||
write(keyNames[b],' | ');
|
||||
writeln;
|
||||
end;
|
||||
|
||||
{$F-}
|
||||
|
||||
|
||||
begin
|
||||
uExitProc := ExitProc;
|
||||
ExitProc := @CleanUp;
|
||||
uOldInt9 := nil;
|
||||
end.
|
||||
unsigned char agarrartecla() {
|
||||
for (int i=0;i<256;++i) if (uKeys[i]==1) return i;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user