日記の切れ端

何か思いついたら書く。

学生時代のソースコードの残骸

昔の資料あさっていたら見つけたので供養 といっても未完成。 何か頑張って作ろうとしていたらしい

#include<stdio.h>
main()
{
    char name[20];
    int a,b,c,d,e,f,g;
    printf("あなたの名前を入力してください");
    scanf("%s",name);
    printf("%sさんはお腹がすきました\n%s:「あーあ、はらへったなーー・・・・よし、なんか食うぞ!」\nどこ行く?\n1、台所\n2、居間\n3、外\n4、ゴミ捨て場\n",name,name);
    scanf("%d",&a);
    switch(a){
        case 1:printf("%s:「よし!台所だ!!」\nドタバタドタバタ・・・・・・\n%s:「母さーん!!はら減ったーー」\n・・・・・・・・\n%s:「いないのかな?しかたない自分でつくるか。さて食い物はどこにあるんだ?」\n1、冷蔵庫\n2、電子レンジ\n3、食器棚\n4、生ゴミ入れ",name,name,name);
            scanf("%d",&b); 
            switch(b){
                case 1:printf("%s:「よーし、なんかないかなー。・・・」\nガチャッ ギギギーーー\n%s:「なっなにもない!!そっそんなー!」\nそう言うと、%s君は倒れた。そして二度と目覚めることはなかった・・・・・・\n\n-GAME OVER-\n",name,name,name);break;
                case 2:printf("%s:「昨日温めたものが入っているかもしれないぞ!」\nそう言うと、%s君は電子レンジを開けた。その時!・・・\nドッカーーーン・・・大きな音と共に強烈な光が家を包んだ。・・・・\n-GAME OVER-\n",name,name);break;
                case 3:printf("%s:「この中に隠してあるに違いない!」\n%s君は食器棚に近づいた・・・その時!\nドッシーーン グラグラグラグラ ガチャーン パリーン バッリーン・・・・\n大きな地震が起こり、%s君は食器の波に飲み込まれた!\n-GAME OVER-\n",name,name,name);break;
                case 4:printf("%s:「この前捨てたやつがまだ食えるかもしれない。」\nそう言うと%s君は堆肥機に飛び込んだ。\n%s:「なんだー、なにもないじゃないかーくそっ」\n%s君は外へ出ようとした。・・・しかし!\n%s:「あっ開かない!そっそんなばかなー、たっ助けてくれーーー・・・」\n次の日、\nお母さん:「あらっ、いつの間にか堆肥機がいっぱいになってるじゃないの?変ねー。\nそれにしても%sはどこ行ったのかしら?」\n-GAME OVER-\n",name,name,name,name,name);break;
                default:printf("\n-GEAM OVER-\n\n");break;
                        }break;

        case 2:printf("%s:「居間か、なんかあったかな?」\nガラガラッ\n%s:「さぁー飯が俺を待っているー!?なにっ飯はどこいちまった?」\n1、茶棚\n2、電話\n3、テレビ\n4、床下\n");
            scanf("%d",&c);
            switch(c){
                case 1:printf("%s:「おっ、まんじゅうがあるじゃないか!!やったー」\n%s君は食べはじめた。\n%s:「うまい!うまい、これこそまんじゅうだ」\n・・・しばらくして,%s:「うっ・・・ううう」%s君は倒れた。\n・・・・・その時、茶棚から1枚の広告が落ちてきた。\n広告:「我が社が開発した新しいごきぶり団子!すばらしい威力で、1つでごきぶり10000匹は殺せるすばらしい威力・・・・・・・・\n-GAME OVER-\n",name,name,name,name,name);break;
                case 2:printf("%s:「なっ?おれの飯がない!泥棒か!警察だ警察を呼べ!」\n%s君は警察に電話をしました。\n警察官:「なんですって小判が盗まれた!それは大変だ、おいっ、すぐに応援を頼む!」\nそしてすぐに%s君の家の周りは警察でいっぱいになった。そして・・・\n警察官:「えっ?小判じゃなくてご飯?なんですかそれは!警察をなめるにもほどがある!公務執行妨害で逮捕する!」\n%s:「そっそんな、そっちが聞き間違えたんじゃ・・・」\nそして%s君は一生を刑務所で暮らした。\n-GAME OVER-\n");break;
                case 3:printf("u\n");break;
                case 4:printf("e");break;
                default:printf("o\n");break;    
                        }break;
        case 3:printf("%s:「久しぶりの外食だー」\n%s君は家を飛び出しました。そして商店街にきました。\n%s:「よーし食うぞー!!さてどの店にするかなー?」\n1、理髪店\n2、フランス料理店\n3、中華料理店\n4、注文の多い料理店\n",name);break;
            scanf("%d",&d);
            switch(d){
                case 1:printf("a\n");break;
                case 2:printf("i\n");break;
                case 3:printf("u\n");break;
                case 4:printf("e\n");break;
                default:printf("o\n");break;    
                        }break;
        case 4:printf("%s:「ごっゴミ捨て場ー?いったい何を食えってんだよ!」\n");break;
            scanf("%d",&e);
            switch(e){
                case 1:printf("a\n");break;
                case 2:printf("i\n");break;
                case 3:printf("u\n");break;
                case 4:printf("e\n");break;
                default:printf("o\n");break;    
                        }break;
        default:printf("o\n");break;    
        }

}

学生時代に作ったゲームのソースコード

資料整理してたらふるーいソース出てきたのでここに残す

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define KIZUGUSURI 5
#define MONSTER 5

short input_1,input_2,random,par,W;
short damage=0,command=0,game=0,myturn=0,next;
short mo_code;
short win=0;

struct charactor
{
    char name[20];
    char level;
    short hp,kou,bou,spd;
    short par_kou,turn;
    short item_01;
};


    struct charactor *po_mo,*po_pl;

    struct charactor player = 
        {"主人公",1,50,5,3,3,4,1,5};

    struct charactor monster[MONSTER] = 
    {
        {"ゴブリン"  ,1,30,5,3,3,4,1,3},
        {"スライム"  ,1,20,4,4,4,6,1,2},
        {"フライ"    ,1,25,4,3,6,4,2,0},
        {"マイコニド",1,30,3,6,3,8,1,0},
        {"怪魚"      ,1,15,7,4,5,4,2,0}
    };


struct challenger
{
    short level;
    short hp,kou,bou,spd;
    short turn;
    short item_01;
};

struct challenger vs_pl;
struct challenger vs_mo;

short attack_check(short,short,short);
void attack();
void item1();
void entory();


void main(void)
{
    for(;;)
    {
        while(!game)
        {
            printf("the VSゲーム\n");
            printf("1:ゲームを始める\n");
            scanf("%d",&input_1);
            switch(input_1)
            {
                case 1:
                    game=1;
                    break;
                default:
                    printf("\n\n\n");
                    break;
            }
            win=0;
        }
        while(game)
        {
            entory();   
            printf("%s",po_mo->name);
            printf("が現れた!!\n");
            next=0;

            while(game && !next)
            {
                vs_pl.turn = po_pl -> turn;
                vs_mo.turn = po_mo -> turn;
                while(command==0)
                {
                    printf("\n[あなた HP:%d/%d] ",vs_pl.hp,po_pl -> hp);
                    printf("[%s HP:%d/%d]\n\n",po_mo->name,vs_mo.hp,po_mo->hp);
                    printf("どうしますか \n 1:戦う 2:アイテム 3:ステータス 4:逃げる\n>");
                    scanf("%d",&input_1);
            /***    コマンド入力  ***/
                    switch(input_1)
                    {
                        case 1:         /*戦う*/
                            input_1 = 1;
                            command=1;
                            break;
                        case 2:/*アイテム*/
                            input_1 = 2;
                            printf("何を使いますか?\n");
                            if(vs_pl.item_01)
                            {
                                printf("1:傷薬        ×%d\n",vs_pl.item_01);
                            }
                            printf("0:キャンセル\n");
                            scanf("%d",&input_2);/*アイテムに行かない原因*/
                            switch(input_2)
                            {
                                case 1:     /*傷薬*/
                                    input_2 = 1;
                                    if(vs_pl.item_01)
                                    {   command=1;  }
                                    else
                                    {   printf("\n");   }
                                    break;  

                                case 0:     /*キャンセル*/
                                    printf("\n\n");
                                    break;  
    
                                default :
                                    printf("\n");
                            }
                            break;
                        case 3:         /*ステータス*/
                            printf("レベル :%d",po_pl -> level);
                            printf("攻撃力 :%d  防御力 :%d \n素早さ :%d",vs_pl.kou,vs_pl.bou,vs_pl.spd);
                            printf(" 現在%d連勝中\n",win);
                            break;
                        case 4:         /*逃げる*/
                            command=1;
                            break;
    
                        default :
                            printf("\n");
                            break;
                    }
                }
                command=0;

/************************/
/*      戦闘シーン     */
/************************/
                while(game)
                {
                    while(vs_pl.turn || vs_mo.turn)
                    {
/*自分のターン*/      if((vs_pl.turn && (vs_pl.spd  > vs_mo.spd)) || !vs_mo.turn)
                        {
                            W = 0;
                            myturn=1;
                            switch(input_1)
                            {
                                case 1: /*戦う*/
                                    attack();
                                    break;
                                case 2: /*アイテム*/
                                    printf("abd");
                                    switch(input_2)
                                    {
                                        case 1:     /*傷薬*/
                                            item1();
                                            break;
                                        default:
                                            printf("cckc");
                                    }
                                    break;
                                case 4:/*逃げる*/
                                    srand(time(NULL));
                                    random = (rand()%10 + (po_pl -> par_kou));
                                    if(random >= 10)
                                    {
                                        printf("は逃げ出した…\n");
                                        vs_pl.turn = vs_mo.turn = 0;
                                        game=0;
                                    }
                                    else
                                    {
                                        printf("\nあなたは逃げるのに失敗した…\n");
                                    }
                                    break;
                                default:
                                    printf("miss");
                            }
                            vs_pl.turn--;
                            myturn=0;
                        }

        /*敵のターン*/

                        else{
                            if(vs_mo.turn)
                            {
                                if(vs_mo.hp <= po_mo -> hp - KIZUGUSURI && vs_mo.item_01)
                                {
                                    item1();
                                }
                                else 
                                {
                                    attack();
                                }
                                vs_mo.turn--;
                                W = 1;              
                            }
                        }
                        if(vs_pl.hp<=0 && game)
                        {
                            printf("あなたの負け…\n\n\n\n\n\n");
                            vs_pl.turn = vs_mo.turn = 0;
                            game=0;
                        }
                        if(vs_mo.hp <= 0 && game)
                        {
                            printf("あなたの勝利!!\n\n");
                            vs_pl.turn = vs_mo.turn = 0;
                            win++;
                            next=1;
                        }
                    }
                break;
                }
            }
        }
    }
}


short attack_check(short kou,short bou,short kakuritu)
{
    short damage=0,lucky=0;
    srand(time(NULL));
    lucky=(rand()%10)+kakuritu;
    if(lucky>=10)
    {
        par = 1;
        damage += (kou-1)/2+1;
    }
    damage+=kou-bou;
    if(damage<=0)
    {
        srand(time(NULL));
        random = (rand()%10);
        if(random <=5)
            damage=1;
        else
            damage=0;
    }
    return damage;
}

void attack()
{
    if(myturn)
    {
        damage = attack_check(vs_pl.kou,vs_mo.bou,po_pl->par_kou);
        if(W)
        {
            printf("\n連続攻撃!!\n");
        }
        else
        {
            printf("%sの攻撃!!\n",player.name);
        }
        if(damage)
        { 
            if(par)
            printf("会心の一撃!!\n");
            printf("%sに%dポイントのダメージを与えた!!\n\n",po_mo->name,damage);
            vs_mo.hp -= damage;
        }   
        else
        {
            printf("しかし、失敗に終わった…");
        }
        par = 0;
    }
    else
    {
        damage=attack_check(vs_mo.kou,vs_pl.bou,po_mo -> par_kou);
        printf("%sの攻撃!!\n",po_mo -> name);
        if(damage)
        { 
            if(par)
            printf("痛恨の一撃!!\n");
            printf("%sは%dポイントのダメージを受けた!!\n\n",po_pl -> name,damage);
            vs_pl.hp -= damage;
        }
        else
        {
            printf("しかし、失敗に終わった…");
        }
    }

}
void item1()
{
    if(myturn)
    {
        printf("%s",po_pl->name);
    }
    else
    {
        printf("%s",po_mo->name);
    }
    printf("は『傷薬』を使った!!\n");
    printf("HPが回復した!!\n");
    if(myturn)
    {
        vs_pl.hp += KIZUGUSURI;
        vs_pl.item_01--;
        if((po_pl -> hp) < vs_pl.hp)
        {
            vs_pl.hp = (po_pl -> hp);
        }
    }
    else
    {
        vs_mo.hp += KIZUGUSURI;
        vs_mo.item_01--;
        if(po_mo -> hp < vs_mo.hp)
        {
            vs_mo.hp = po_mo -> hp;
        }
    }
}

void entory()
{
    if(!win)
    {
        po_pl = &player;
        vs_pl.level = po_pl -> level;
        vs_pl.hp = po_pl -> hp;
        vs_pl.kou = po_pl -> kou;
        vs_pl.bou = po_pl -> bou;
        vs_pl.spd = po_pl -> spd;
        vs_pl.turn = po_pl -> turn;
        vs_pl.item_01 = po_pl -> item_01;
    }
    srand(time(NULL));
    mo_code=(rand()% MONSTER);
    po_mo = &monster[mo_code];

    vs_mo.hp = po_mo -> hp;
    vs_mo.kou = po_mo -> kou;
    vs_mo.bou = po_mo -> bou;
    vs_mo.spd = po_mo -> spd;
    vs_mo.turn = po_mo -> turn;
    vs_mo.item_01 = po_mo -> item_01;
}

文章を書く

もともと自分は文章を書くのは大嫌いだった。

作文は苦手だし、読書感想文なんて最難関の宿題だった。

 

今まで文章を書くためには「文章の書き方」のようなテンプレが存在するものだと思っていた。

日記とはこうあるべき、作文とはこうあるべき、読書感想文とは、論文とは・・・など書き方に一定のルールが存在して、それに従わないといけないと強く感じていた。

 

が、実際にそんなことはなかった。

文章は自由に書いていいし、書き方にルールなんてなかった。

 

今は好き勝手に文章を書き並べることができるようになった。

それはとても気楽だし、無理したり気取らなくてもいいのが嬉しい。

 

この楽しさを小学生の時分に知っていたらもっと色々と書けてたんじゃないかな?

とは思う。

が、過去の話をどうのこうの言っても仕方ないので

今このときをそれなりに楽しんでいきたいと思うのであった。

 

おしまい

アイデアを書き捨てる話

イデアを残すというのがなんとなく性に合わなかったりするので

書き捨てる場所があるのはとてもいいことだったりする。

 

書き捨てる場所として一番便利だったのがツイッター

 

ツイッターに書き捨てておくと、気になったときに検索できるし、そのまま忘れてもTLで流れていく。

個人的には非常に画期的なツールだったんだと改めて感じる。

(現在、デジタルデトックス体験のためにアカウント削除中)

 

で、浮かんだアイデアを書き捨てる場所がないのでここに残す。

 

<捨てアイデア

敬具が出るまで続く手紙。

→手紙は拝啓で始まり敬具で終わる。

 ならば敬具が出るまでは永遠と手紙は続くはず。

 

このアイデアを活用できるのが小説的なものなのかミステリー的なものなのかボードゲームの要素なのかはわからない。

が、こういうのを残しておくのが面白いと思う。

 

というわけでツイッターがない間はチマチマとここに更新して行こうと思う。

 

デジタルデトックスの話

デジタルデトックス体験のため、試しにツイッターアカウント消してみました。

ツイッターのルールでは一ヶ月以内ならば復活可能とあるので

消してみてどうなるのかじっくり試してみたいと思います。

 

過去の諸々が全部消えちゃったかもしれませんが

ツイッターもいつかなくなるかもしれないので

それがちょっと早まったんだなと思ってわりと気楽に考えてます。

 

 

おそらくですが、ツイッターアカウントは復活させます。

※アカウント連携しているサービスが使えなくなるかもしれないので

 

アカウント消した2日間の状況から見るとツイ廃度は結構高めでした。

初日 アプリを6回起動

二日目 アプリを10回起動

と存在しないアカウントを求めて自然と手が動いてましたw

これはよくない兆候ですね><

 

 

まあ、しばらく試してみてスッキリしたらアカウント復活の手続き取ります。

限界点の話

限界点とは限界点を定義する人によって決まるものである。

 

ある人が「ここを限界点とする!」と言ったならば、そこが限界点の1つとなる。

軽く通り過ぎることができる人もいるし、そこまで到達できない人もいる。

自分が前者になるか後者となるかはわからない。

 

しかし自分自身の限界点というものは、自分自身のみが決定することができる。

つまり自分自身が「まだまだ限界ではない」と思っている限り、延々と進み続けることができる。

逆に「ここが限界だ」と思えば簡単に到達も出来るし諦めることもできる。

 

あなたの限界点はどこですか?

ゲームが面白くなる条件ってなんだろう?

今日ふと考えていたこと

 

 

試行その1

こんなルールを考えた

・共通在庫にA、B、Cの素材が無限にある

・自分のターンに共通在庫から3つ素材を取ることができる

・Aは1個で1点、Bは3個集めると3点、Cは5個集めると5点

・各プレイヤーが10ターンを行うとゲームが終了

・得点が一番多いプレイヤーが勝ち

 

こんなルールのゲームがあったとして面白いかどうか。

おいら的には面白くないと思う。

 

理由

・Aを集めれば1点がもらえるが、BとCは数を集めないと点数がもらえない。

 おそらくみんなAを集めるので全員が同点でゲームが終わる。

 

試行その2

ルールを少し改良してみる(変更部分は赤字)

・共通在庫にA、B、Cの素材が無限にある

・自分のターンに共通在庫から3つ素材を取ることができる

・Aは1個で1点、Bは3個集めると5点、Cは5個集めると3点

・各プレイヤーが10ターンを行うとゲームが終了

・得点が一番多いプレイヤーが勝ち

 

これでおもしろくなったか?

そんなことないですよなー。

 

理由

・集める対象がAからBに変わっただけ。1ターンに3つ取れるので

 おそらく全員Bを取っていくと思う。全員引き分けになる。

 

思ったこと

ルールを作るってのは簡単だけど、面白いルールとなると話は別。

上のルールも変更次第で面白いゲームに化けるようになる・・・はず。

例えば

・取れる個数を3個→2個に変更

・Bを連続で取れない

・ゲーム終了時点でCの個数が少ない人は脱落

などなど。

 

面白いルールには

・「ぱっと見で最適解が導けない程度のルールの深さ」とか

・「インタラクションによる選択の苦しさ」とか

・「プレイするタイミングで状態が異なるランダム性」とか

そういうものがあるんだと思った。