アニメ『魔法少女育成計画』
少年少女がキャンディを集めます。
魔法少女というのは街に何人もいて、良い行いをすると、キャンディが増えるみたいです。魔法少女といいつつ、変身前は男の子だったりします。嘉門達夫の「看護婦のおっさん」を思い出しました。可愛いキャラなのに過酷なサバイバルというギャップ。 『まどか☆マギカ』っぽいノリなのでしょうか。んん〜、ハッピーエンドが良いので、視聴しようか迷うところ。きっと面白いんでしょうけど。
「虹の色と抵抗カラーコードは異なる」では、抵抗のカラーコードを勉強しましたが、やはり脳に染み込ませて、使っていかないと意味がありません。今回はゲームで覚えてみます。
いろんな色のキャンディが増えていくゲームです。
『魔法少女育成計画』のキャンディは増えればうれしいものですが、このゲームでは、キャンディはあしきものです。増えてはなりません。ちなみにエスケープシーケンスでコンソールに表示する色が、キャンディ色になっているので、表示する色に限りがあります。それぞれの色のキャンディが画面に表示されたら、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

コメント