アニメ『魔法少女育成計画』
少年少女がキャンディを集めます。
魔法少女というのは街に何人もいて、良い行いをすると、キャンディが増えるみたいです。魔法少女といいつつ、変身前は男の子だったりします。嘉門達夫の「看護婦のおっさん」を思い出しました。可愛いキャラなのに過酷なサバイバルというギャップ。 『まどか☆マギカ』っぽいノリなのでしょうか。んん〜、ハッピーエンドが良いので、視聴しようか迷うところ。きっと面白いんでしょうけど。
「虹の色と抵抗カラーコードは異なる」では、抵抗のカラーコードを勉強しましたが、やはり脳に染み込ませて、使っていかないと意味がありません。今回はゲームで覚えてみます。
いろんな色のキャンディが増えていくゲームです。
『魔法少女育成計画』のキャンディは増えればうれしいものですが、このゲームでは、キャンディはあしきものです。増えてはなりません。ちなみにエスケープシーケンスでコンソールに表示する色が、キャンディ色になっているので、表示する色に限りがあります。それぞれの色のキャンディが画面に表示されたら、2秒以内に、その色の数字を押したら、キャンディが消えます。
赤=2
黄=4
緑=5
青=6
紫=7
城=9
これらのカラーコードしか覚えることができません。まあその他の色がどうしても必要になったら、GUIで作ろうかと思います。
ソースコードです。
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <time.h> 4 #include <ncurses.h> 5 6 int main() 7 { 8 int x,y,c,w,h,key; 9 char candy_str[10]; 10 11 int delay=2000000; 12 int point=0; 13 int candy=0; 14 15 srand(time(NULL)); 16 17 initscr(); 18 19 noecho(); 20 cbreak(); 21 timeout(0); 22 23 getmaxyx(stdscr, h, w); 24 25 start_color(); 26 init_pair(2, COLOR_WHITE, COLOR_RED); 27 init_pair(4, COLOR_BLACK, COLOR_YELLOW); 28 init_pair(5, COLOR_WHITE, COLOR_GREEN); 29 init_pair(6, COLOR_WHITE, COLOR_BLUE); 30 init_pair(7, COLOR_WHITE, COLOR_MAGENTA); 31 init_pair(9, COLOR_BLACK, COLOR_WHITE); 32 init_pair(0, COLOR_WHITE, COLOR_BLACK); 33 34 erase(); 35 36 while(1){ 37 y = rand() % (h-1) + 1; 38 x = rand() % (w-1) + 1; 39 do{ 40 c = rand() % 8 + 1; 41 }while( c==0 || c==3 || c==1 || c==8 ); 42 43 attrset(COLOR_PAIR(0)); 44 move(0, 0); 45 addstr("CANDY="); 46 move(0, 6); 47 sprintf(candy_str,"%d",candy); 48 addstr(candy_str); 49 50 attrset(COLOR_PAIR(c)); 51 move(y, x); 52 addstr(">o<"); 53 54 if(candy++ > 100) 55 break; 56 57 refresh(); 58 59 usleep(delay); 60 61 key = getch(); 62 if(key == (c + '0')){ 63 attrset(COLOR_PAIR(0)); 64 move(y, x); 65 addstr(" "); 66 refresh(); 67 candy--; 68 point++; 69 }else{ 70 delay-=100000; 71 if(delay < 0){ 72 delay = 100000; 73 } 74 } 75 if(key == 'q')break; 76 } 77 78 endwin(); 79 80 printf("\n"); 81 printf("--------------------------------------\n"); 82 printf("GAME OVER!\n\n"); 83 printf("YOU GOT %d POINTS !!\n",point*100); 84 printf("--------------------------------------\n"); 85 86 return (0); 87 }
実行画面です。
ソースはgithubにあります。
takk@deb83:~$ git clone https://github.com/takkete/scrap.git Cloning into 'scrap'... remote: Counting objects: 6, done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 3 Unpacking objects: 100% (6/6), done. Checking connectivity... done. takk@deb83:~$ cd scrap takk@deb83:~/scrap$ gcc -lncurses candy.c takk@deb83:~/scrap$ ./a.out
コメント