抵抗のカラーコードをゲームで覚える


アニメ『魔法少女育成計画』
少年少女がキャンディを集めます。
魔法少女というのは街に何人もいて、良い行いをすると、キャンディが増えるみたいです。魔法少女といいつつ、変身前は男の子だったりします。嘉門達夫の「看護婦のおっさん」を思い出しました。可愛いキャラなのに過酷なサバイバルというギャップ。 『まどか☆マギカ』っぽいノリなのでしょうか。んん〜、ハッピーエンドが良いので、視聴しようか迷うところ。きっと面白いんでしょうけど。

虹の色と抵抗カラーコードは異なる」では、抵抗のカラーコードを勉強しましたが、やはり脳に染み込ませて、使っていかないと意味がありません。今回はゲームで覚えてみます。
いろんな色のキャンディが増えていくゲームです。
『魔法少女育成計画』のキャンディは増えればうれしいものですが、このゲームでは、キャンディはあしきものです。増えてはなりません。ちなみにエスケープシーケンスでコンソールに表示する色が、キャンディ色になっているので、表示する色に限りがあります。それぞれの色のキャンディが画面に表示されたら、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	}

実行画面です。
candy-001

ソースは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

One response to “抵抗のカラーコードをゲームで覚える

  1. Wow, awesome blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your site is faacistnt, let alone the content!. Thanks For Your article about Structura corporala a unui porumbel | STARGEC CLUB .

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA