game speed property added. Arrow input added

git-svn-id: svn://kolibrios.org@5286 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
eugene455 2014-12-29 10:41:20 +00:00
parent a3271aa807
commit 0c868e2342

View File

@ -15,8 +15,8 @@ int DeltaH [8]={11,16,19,20,21,22,23,23};
//-1-quit, 0-menu, 1-game //-1-quit, 0-menu, 1-game
int GAME_TYPE=0; int GAME_TYPE=0;
int TactCount=0;
int GLOBAL_SPEED=0; int GLOBAL_SPEED=0;
int Max_Speed=5;
//colors //colors
int COLOR_INDEX=0; int COLOR_INDEX=0;
char RAINBOW_NAME[7][7]={"red","orange","yellow","green","blue","indigo","violet"}; char RAINBOW_NAME[7][7]={"red","orange","yellow","green","blue","indigo","violet"};
@ -66,13 +66,9 @@ int Tile_Type=0;
int Q_SELECTED=0; int Q_SELECTED=0;
char TILENAME[6][11]={"empty","block","spike","jump pad","checkpt","finish"}; char TILENAME[6][11]={"empty","block","spike","jump pad","checkpt","finish"};
//TIMING
int OLD_FPS=60;
int NEW_FPS=60;
//OTHER //OTHER
int THE_END_COUNT=600; int THE_END_COUNT=600;
char Arrow='0';
//Libraries //Libraries
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -90,6 +86,7 @@ int THE_END_COUNT=600;
char getKey() { char getKey() {
int NewKey=_ksys_get_key(); int NewKey=_ksys_get_key();
NewKey/=256; NewKey/=256;
Arrow=(NewKey/256)%256;
return (NewKey%256); return (NewKey%256);
} }
void LoadData () { void LoadData () {
@ -169,17 +166,17 @@ void SaveData () {
void MainMenu () { void MainMenu () {
if (Key==27) GAME_TYPE=-1; if (Key==27) GAME_TYPE=-1;
if (MENU_SELECTED==10 && Key==' ') GAME_TYPE=-1; if (MENU_SELECTED==11 && (Key==' ' || Arrow==28)) GAME_TYPE=-1;
if (Key=='s') MENU_SELECTED++; if (Key=='s' || Arrow=='P') MENU_SELECTED++;
if (Key=='w') MENU_SELECTED--; if (Key=='w' || Arrow=='H') MENU_SELECTED--;
if (MENU_SELECTED<0) MENU_SELECTED=10; if (MENU_SELECTED<0) MENU_SELECTED=11;
if (MENU_SELECTED>10) MENU_SELECTED=0; if (MENU_SELECTED>11) MENU_SELECTED=0;
if (MENU_SELECTED==0 && Key==' ') { if (MENU_SELECTED==0 && (Key==' ' || Arrow==28)) {
GAME_TYPE=1; GAME_TYPE=1;
GLOBAL_CHECKPOINT=0; GLOBAL_CHECKPOINT=0;
return; return;
} }
if (MENU_SELECTED==3 && (Key=='a' || Key=='d')) { if (MENU_SELECTED==3 && (Key=='a' || Key=='d' || Arrow=='K' || Arrow=='M')) {
if (GLOBAL_BACKGROUNDCOLOR==0) { if (GLOBAL_BACKGROUNDCOLOR==0) {
GLOBAL_BACKGROUNDCOLOR=0x00ffffff; GLOBAL_BACKGROUNDCOLOR=0x00ffffff;
GLOBAL_FRONTCOLOR=0; GLOBAL_FRONTCOLOR=0;
@ -189,27 +186,27 @@ void MainMenu () {
} }
} }
if (MENU_SELECTED==1) { if (MENU_SELECTED==1) {
if (Key=='a' && CURRENT_LEVEL>0) CURRENT_LEVEL--; if ((Key=='a' || Arrow=='K') && CURRENT_LEVEL>0) CURRENT_LEVEL--;
if (Key=='d' && CURRENT_LEVEL<MAX_LEVEL) CURRENT_LEVEL++; if ((Key=='d' || Arrow=='M') && CURRENT_LEVEL<MAX_LEVEL) CURRENT_LEVEL++;
HeroSides=LevelProps[CURRENT_LEVEL][2]; HeroSides=LevelProps[CURRENT_LEVEL][2];
} }
if (MENU_SELECTED==2) { if (MENU_SELECTED==2) {
if (Key=='a' && COLOR_INDEX>0) COLOR_INDEX--; if ((Key=='a' || Arrow=='K') && COLOR_INDEX>0) COLOR_INDEX--;
if (Key=='d' && COLOR_INDEX<6) COLOR_INDEX++; if ((Key=='d' || Arrow=='M') && COLOR_INDEX<6) COLOR_INDEX++;
HeroColor=RAINBOW_TABLE [COLOR_INDEX][0]; HeroColor=RAINBOW_TABLE [COLOR_INDEX][0];
GLOBAL_BLOCKCOLOR=RAINBOW_TABLE [COLOR_INDEX][1]; GLOBAL_BLOCKCOLOR=RAINBOW_TABLE [COLOR_INDEX][1];
GLOBAL_BATUTCOLOR=RAINBOW_TABLE [COLOR_INDEX][2]; GLOBAL_BATUTCOLOR=RAINBOW_TABLE [COLOR_INDEX][2];
GLOBAL_PITCOLOR=RAINBOW_TABLE [COLOR_INDEX][3]; GLOBAL_PITCOLOR=RAINBOW_TABLE [COLOR_INDEX][3];
GLOBAL_FLAGCOLOR=RAINBOW_TABLE [COLOR_INDEX][4]; GLOBAL_FLAGCOLOR=RAINBOW_TABLE [COLOR_INDEX][4];
} }
if (MENU_SELECTED==7 && (Key=='a' || Key=='d')) { if (MENU_SELECTED==7 && (Key=='a' || Key=='d' || Arrow=='K' || Arrow=='M')) {
if (SAVE_FOLDER_TYPE==0) { if (SAVE_FOLDER_TYPE==0) {
SAVE_FOLDER_TYPE=1; SAVE_FOLDER_TYPE=1;
} else { } else {
SAVE_FOLDER_TYPE=0; SAVE_FOLDER_TYPE=0;
} }
} }
if (MENU_SELECTED==8 && (Key=='a' || Key=='d')) { if (MENU_SELECTED==8 && (Key=='a' || Key=='d' || Arrow=='K' || Arrow=='M')) {
int i=0; int i=0;
int j=0; int j=0;
for (i=0; i<Width; i++) { for (i=0; i<Width; i++) {
@ -224,11 +221,14 @@ void MainMenu () {
DRAW_TECH=0; DRAW_TECH=0;
} }
Update(); Update();
} }
if (MENU_SELECTED==4 && Key==' ') LoadData(); if (MENU_SELECTED==9) {
if (MENU_SELECTED==5 && Key==' ') SaveData(); if ((Key=='a' || Arrow=='K') && Max_Speed>1) Max_Speed--;
if (MENU_SELECTED==6 && Key==' ') { if ((Key=='d' || Arrow=='M') && Max_Speed<14) Max_Speed++;
}
if (MENU_SELECTED==4 && (Key==' ' || Arrow==28)) LoadData();
if (MENU_SELECTED==5 && (Key==' ' || Arrow==28)) SaveData();
if (MENU_SELECTED==6 && (Key==' ' || Arrow==28)) {
if (CURRENT_LEVEL>=3) { if (CURRENT_LEVEL>=3) {
DrawText (300,300,"error",GLOBAL_FRONTCOLOR); DrawText (300,300,"error",GLOBAL_FRONTCOLOR);
DrawText (30,320,"(choose level 0/1/2 to edit them)",GLOBAL_FRONTCOLOR); DrawText (30,320,"(choose level 0/1/2 to edit them)",GLOBAL_FRONTCOLOR);
@ -244,7 +244,7 @@ void MainMenu () {
GAME_TYPE=3; GAME_TYPE=3;
Panel=1; Panel=1;
} }
if (MENU_SELECTED==9 && Key==' ') GAME_TYPE=2; if (MENU_SELECTED==10 && (Key==' ' || Arrow==28)) GAME_TYPE=2;
DrawTitle (60,100,GLOBAL_FRONTCOLOR); DrawTitle (60,100,GLOBAL_FRONTCOLOR);
@ -276,6 +276,9 @@ void MainMenu () {
} else { } else {
DrawText (450,480,"lines",GLOBAL_FRONTCOLOR); DrawText (450,480,"lines",GLOBAL_FRONTCOLOR);
} }
DrawText (100,500,"max speed < >",GLOBAL_FRONTCOLOR);
IntToStr(Max_Speed,NUMBER);
DrawText (300,500,NUMBER,GLOBAL_FRONTCOLOR);
DrawText (100,520,"help",GLOBAL_FRONTCOLOR); DrawText (100,520,"help",GLOBAL_FRONTCOLOR);
DrawText (100,540,"quit",GLOBAL_FRONTCOLOR); DrawText (100,540,"quit",GLOBAL_FRONTCOLOR);
DrawText (20,580,"developed by e_shi games 2014",GLOBAL_FRONTCOLOR); DrawText (20,580,"developed by e_shi games 2014",GLOBAL_FRONTCOLOR);
@ -289,8 +292,9 @@ void MainMenu () {
if (MENU_SELECTED==6) DrawText (100,440,"level editor",HeroColor); if (MENU_SELECTED==6) DrawText (100,440,"level editor",HeroColor);
if (MENU_SELECTED==7) DrawText (100,460,"saveload folder < >",HeroColor); if (MENU_SELECTED==7) DrawText (100,460,"saveload folder < >",HeroColor);
if (MENU_SELECTED==8) DrawText (100,480,"redraw technology < >",HeroColor); if (MENU_SELECTED==8) DrawText (100,480,"redraw technology < >",HeroColor);
if (MENU_SELECTED==9) DrawText (100,520,"help",HeroColor); if (MENU_SELECTED==9) DrawText (100,500,"max speed < >",HeroColor);
if (MENU_SELECTED==10) DrawText (100,540,"quit",HeroColor); if (MENU_SELECTED==10) DrawText (100,520,"help",HeroColor);
if (MENU_SELECTED==11) DrawText (100,540,"quit",HeroColor);
} }
@ -319,7 +323,7 @@ void GamePlay () {
if (TO_NEXT_LEVEL<500) { if (TO_NEXT_LEVEL<500) {
TO_NEXT_LEVEL+=2; TO_NEXT_LEVEL+=2;
} else { } else {
if (Key==' ' && TO_NEXT_LEVEL<=504) { if ((Key==' ' || Arrow==28) && TO_NEXT_LEVEL<=504) {
CURRENT_LEVEL++; CURRENT_LEVEL++;
HeroSides=CURRENT_LEVEL; HeroSides=CURRENT_LEVEL;
if (CURRENT_LEVEL>MAX_LEVEL) MAX_LEVEL=CURRENT_LEVEL; if (CURRENT_LEVEL>MAX_LEVEL) MAX_LEVEL=CURRENT_LEVEL;
@ -392,24 +396,25 @@ void GamePlay () {
void ShowHelp() { void ShowHelp() {
DrawText (5,10,"controls",HeroColor); DrawText (5,10,"controls",HeroColor);
DrawText (5,30,"w/a/s/d_choose in menu/editor",GLOBAL_FRONTCOLOR); DrawText (5,30,"w/a/s/d or arrow keys to choose",GLOBAL_FRONTCOLOR);
DrawText (5,50,"space_select/jump",GLOBAL_FRONTCOLOR); DrawText (5,50,"space jump",GLOBAL_FRONTCOLOR);
DrawText (5,70,"escape_return to menu/exit",GLOBAL_FRONTCOLOR); DrawText (5,70,"space/enter to select",GLOBAL_FRONTCOLOR);
DrawText (5,100,"level editor notes",HeroColor); DrawText (5,90,"escape return to menu/exit",GLOBAL_FRONTCOLOR);
DrawText (5,120,"press e to switch grid/tools panel",GLOBAL_FRONTCOLOR); DrawText (5,130,"level editor notes",HeroColor);
DrawText (5,140,"press q to switch grid/properties",GLOBAL_FRONTCOLOR); DrawText (5,150,"press e to switch grid/tools panel",GLOBAL_FRONTCOLOR);
DrawText (5,160,"select save game to save all levels",GLOBAL_FRONTCOLOR); DrawText (5,170,"press q to switch grid/properties",GLOBAL_FRONTCOLOR);
DrawText (5,180,"select load game to load all levels",GLOBAL_FRONTCOLOR); DrawText (5,190,"select save game to save all levels",GLOBAL_FRONTCOLOR);
DrawText (5,200,"select level 0/1/2 to play/edit",GLOBAL_FRONTCOLOR); DrawText (5,210,"select load game to load all levels",GLOBAL_FRONTCOLOR);
DrawText (5,220,"use f to go to level editor quickly",GLOBAL_FRONTCOLOR); DrawText (5,230,"select level 0/1/2 to play/edit",GLOBAL_FRONTCOLOR);
DrawText (5,240+20,"use start column to test level from",GLOBAL_FRONTCOLOR); DrawText (5,250,"use f to go to level editor quickly",GLOBAL_FRONTCOLOR);
DrawText (5,260+20,"desired place (note _ you can test",GLOBAL_FRONTCOLOR); DrawText (5,270,"use start column to test level from",GLOBAL_FRONTCOLOR);
DrawText (5,280+20,"level from column which contains",GLOBAL_FRONTCOLOR); DrawText (5,290,"desired place (you can test",GLOBAL_FRONTCOLOR);
DrawText (5,300+20,"checkpoint)",GLOBAL_FRONTCOLOR); DrawText (5,310,"level from column which contains",GLOBAL_FRONTCOLOR);
DrawText (5,360,"redraw technology notes",HeroColor); DrawText (5,330,"checkpoint)",GLOBAL_FRONTCOLOR);
DrawText (5,380,"lines tech works faster but",GLOBAL_FRONTCOLOR); DrawText (5,370,"redraw technology notes",HeroColor);
DrawText (5,400,"sometimes it can be unstable",GLOBAL_FRONTCOLOR); DrawText (5,390,"lines tech works faster but",GLOBAL_FRONTCOLOR);
DrawText (5,420,"frame tech works slower but stable",GLOBAL_FRONTCOLOR); DrawText (5,410,"sometimes it can be unstable",GLOBAL_FRONTCOLOR);
DrawText (5,430,"frame tech works slower but stable",GLOBAL_FRONTCOLOR);
if (Key=='f') { if (Key=='f') {
GAME_TYPE=3; GAME_TYPE=3;
@ -471,11 +476,11 @@ void LevelEditor () {
int i=0; int i=0;
int j=0; int j=0;
if (Panel==0) { if (Panel==0) {
if (Key=='d' && Tile_X<399) Tile_X++; if ((Key=='d' || Arrow=='M') && Tile_X<399) Tile_X++;
if (Key=='a' && Tile_X>0) Tile_X--; if ((Key=='a' || Arrow=='K') && Tile_X>0) Tile_X--;
if (Key=='s' && Tile_Y<8) Tile_Y++; if ((Key=='s' || Arrow=='P') && Tile_Y<8) Tile_Y++;
if (Key=='w' && Tile_Y>0) Tile_Y--; if ((Key=='w' || Arrow=='H') && Tile_Y>0) Tile_Y--;
if (Key==' ') { if ((Key==' ' || Arrow==28)) {
if (Tile_Type==5) { if (Tile_Type==5) {
for (i=0; i<LEVEL_MAXLEN; i++) if (*(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+i)==5) *(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+i)=0; for (i=0; i<LEVEL_MAXLEN; i++) if (*(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+i)==5) *(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+i)=0;
*(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+Tile_X)=5; *(Levels[CURRENT_LEVEL]+0*LEVEL_MAXLEN+Tile_X)=5;
@ -485,13 +490,13 @@ void LevelEditor () {
} }
} }
if (Panel==1) { if (Panel==1) {
if (Key=='s' && Tile_Type<5) Tile_Type++; if ((Key=='s' || Arrow=='P') && Tile_Type<5) Tile_Type++;
if (Key=='w' && Tile_Type>0) Tile_Type--; if ((Key=='w' || Arrow=='H') && Tile_Type>0) Tile_Type--;
} }
if (Panel==2) { if (Panel==2) {
if (Key=='s' && Q_SELECTED<5) Q_SELECTED++; if ((Key=='s' || Arrow=='P') && Q_SELECTED<5) Q_SELECTED++;
if (Key=='w' && Q_SELECTED>0) Q_SELECTED--; if ((Key=='w' || Arrow=='H') && Q_SELECTED>0) Q_SELECTED--;
if (Key==' ' && Q_SELECTED==0) { if ((Key==' ' || Arrow==28) && Q_SELECTED==0) {
GAME_TYPE=1; GAME_TYPE=1;
if (GLOBAL_CHECKPOINT>0) { if (GLOBAL_CHECKPOINT>0) {
int isCheck=0; int isCheck=0;
@ -525,23 +530,23 @@ void LevelEditor () {
} }
} }
if (Q_SELECTED==1) { if (Q_SELECTED==1) {
if (Key=='d' && GLOBAL_CHECKPOINT<399) GLOBAL_CHECKPOINT++; if ((Key=='d' || Arrow=='M') && GLOBAL_CHECKPOINT<399) GLOBAL_CHECKPOINT++;
if (Key=='a' && GLOBAL_CHECKPOINT>0) GLOBAL_CHECKPOINT--; if ((Key=='a' || Arrow=='K') && GLOBAL_CHECKPOINT>0) GLOBAL_CHECKPOINT--;
} }
if (Key==' ' && Q_SELECTED==2) { if ((Key==' ' || Arrow==28) && Q_SELECTED==2) {
for (i=0; i<9; i++) { for (i=0; i<9; i++) {
for (j=0; j<LEVEL_MAXLEN; j++) { for (j=0; j<LEVEL_MAXLEN; j++) {
*(Levels[CURRENT_LEVEL]+i*LEVEL_MAXLEN+j)=0; *(Levels[CURRENT_LEVEL]+i*LEVEL_MAXLEN+j)=0;
} }
} }
} }
if (Key==' ' && Q_SELECTED==3) SaveArray(); if ((Key==' ' || Arrow==28) && Q_SELECTED==3) SaveArray();
if (Q_SELECTED==4) { if (Q_SELECTED==4) {
if (Key=='a' && LevelProps[CURRENT_LEVEL][2]>3) LevelProps[CURRENT_LEVEL][2]--; if ((Key=='a' || Arrow=='K') && LevelProps[CURRENT_LEVEL][2]>3) LevelProps[CURRENT_LEVEL][2]--;
if (Key=='d' && LevelProps[CURRENT_LEVEL][2]<10) LevelProps[CURRENT_LEVEL][2]++; if ((Key=='d' || Arrow=='M') && LevelProps[CURRENT_LEVEL][2]<10) LevelProps[CURRENT_LEVEL][2]++;
HeroSides=LevelProps[CURRENT_LEVEL][2]; HeroSides=LevelProps[CURRENT_LEVEL][2];
} }
if (Key==' ' && Q_SELECTED==5) GAME_TYPE=0; if ((Key==' ' || Arrow==28) && Q_SELECTED==5) GAME_TYPE=0;
} }
if (Key=='e') { if (Key=='e') {
if (Panel==0) { if (Panel==0) {
@ -668,22 +673,13 @@ int main(int argc, char **argv) {
OffsetY=ScreenY/2-Height/2; OffsetY=ScreenY/2-Height/2;
draw_window(); draw_window();
int TIME_START=0;
int TIME_END=0;
int Delta_Hz=0;
TIME_START=_ksys_get_system_clock();
while (!0) { while (!0) {
TIME_END=_ksys_get_system_clock(); if (GAME_TYPE==1) {
if (TIME_START==TIME_END) { _ksys_delay(15-Max_Speed);
Delta_Hz++; }
} else { else {
OLD_FPS=NEW_FPS; _ksys_delay(1);
NEW_FPS=Delta_Hz;
TIME_START=TIME_END;
Delta_Hz=0;
} }
_ksys_delay((OLD_FPS+NEW_FPS)/120);
Key=getKey(); Key=getKey();
if (GAME_TYPE==-1) return 0; if (GAME_TYPE==-1) return 0;
if (GAME_TYPE==0) MainMenu (); if (GAME_TYPE==0) MainMenu ();