ジャンケンゲーム
追記:メッセンジャーでprintHandイマイチとコメントを貰ったので直した。
strcatとか初めて使ったけど、なんで値入れるためのポインタを渡すようになってるんだろ。関数の戻り値が文字列を返してくれればいいのに。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> char *hands[] = {"guu", "choki", "paa"}; void janken(){ int player, computer; scanf("%d", &player); computer = rand() % 3; puts(hands[computer]); if(player == computer){ puts("draw"); janken(); }else if((player + 1) % 3 == computer){ puts("win"); }else { puts("lose"); } } int main(){ srand(time(NULL)); char hand_list[100] = "", tmp[10] = ""; int i; for(i=0;i < 3;i++){ sprintf(tmp, "%s: %d ", hands[i], i); strcat(hand_list, tmp); } puts(hand_list); janken(); return 0; }
追記ここまで
main関数を再帰してたり、あんまり上手じゃない。
#include <stdio.h> #include <stdlib.h> #include <time.h> void printHand(int n){ switch(n){ case 1: puts("guu"); break; case 2: puts("choki"); break; case 3: puts("paa"); break; } } int main(){ puts("guu:1 choki:2 paa:3"); int player, computer; srand(time(NULL)); scanf("%d", &player); computer = rand() % 3 + 1; printHand(computer); if(player == computer){ puts("draw"); main(); }else if((player + 1) % 3 == computer){ puts("win"); }else { puts("lose"); } return 0; }
追記:JavaScriptだとこんな感じかな
(function(){ var hands = ["guu","choki","paa"]; function janken(){ var player = + prompt(); var computer = Math.random() * 3 | 0; console.log(hands[computer]); switch(computer){ case player: console.log("draw"); janken(); break; case (player + 1) % 3: console.log("win"); break; default: console.log("lose"); break; } } console.log(hands.map(function(s,i) s + ":" + i).join(" ")); janken(); })();