d0147101_2344241

1: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:03:33.42 ID:wLeoJNXO0.net

独学でも余裕なんですわwww


5: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:04:51.21 ID:4VfPl1xO0.net
>>1
aiもつくったん?


9: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:05:30.40 ID:wLeoJNXO0.net
>>5
いや、俺vs俺


15: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:07:50.11 ID:XG8IYu860.net
>>9
AI付きで作れよそんな難しくないよ


6: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:04:53.88 ID:7LivGVMl0.net
30分で作れる


7: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:04:58.96 ID:N49WK9x50.net
とりあえずどっかのAIと対戦させて結果教えろ


10: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:05:37.78 ID:4oZLPZYQ0.net
ソースコード貼って


17: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:07:54.57 ID:wLeoJNXO0.net
>>10
http://codepad.org/MrRhNjTI

これれす

#include <stdio.h>

//【0】何もなし
//【1】白
//【2】黒
//【5】壁

int main()
{
    int field[10][10];//[高さ][横]
    int i,j,x,y,n;
    char s[100];

    //初期化
    for(i=0;i<10;i++){
        for(j=0;j<10;j++){
            field[i][j]=0;
        }
    }


    //造山帯
    for(i=0;i<10;i++){
        field[0][i]=5;
        field[9][i]=5;
        field[i][0]=5;
        field[i][9]=5;
    }

    field[4][4]=2;
    field[4][5]=1;
    field[5][4]=1;
    field[5][5]=2;


    printf("名前を入力してね:");
    scanf("%s", s);
    printf("本当にボブでいいですか?");
    scanf("%s", s);
    printf("名前がボブに決まりました\n\n");

    for(n=0;n<100;n++){

        //フィールド生成
        for(i=0;i<10;i++){
            for(j=0;j<10;j++){
                if(field[i][j]==0) printf(" ");
                if(field[i][j]==1) printf("○");
                if(field[i][j]==2) printf("●");
                if(field[i][j]==5) printf("■");
            }
            printf("\n");
        }
        if(n%2==0) printf("僕の番どす\n");
        if(n%2==1) printf("ボブの番どす\n");

        //入力
        scanf("%d%d",&x,&y);

        if (n%2==0) field[x][y]=1;
        if (n%2==1) field[x][y]=2;

    }
    return 0;
}



21: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:11:13.97 ID:kvQU/Jp0i.net
>>17
なんでボブ確定なんだよwwwwww


24: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:12:01.46 ID:XG8IYu860.net
>>17
なに入力しても名前ボブになるじゃねえか
あと出来てねえじゃねえかよ置けるかの判定くらいしろよ


22: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:11:40.25 ID:V9rOhaPO0.net
>>17
じゃあ次は着手不可判定と裏返すルーチンを頑張ろうか


29: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:13:20.59 ID:wLeoJNXO0.net
>>22
四十秒で作ってきます


31: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:14:16.54 ID:4oZLPZYQ0.net
>>29
あと自分の名前くらい好きに決めさせて


32: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:15:30.50 ID:wLeoJNXO0.net
>>31
わかつった


36: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:18:13.92 ID:V9rOhaPO0.net
>>29
それ終わったらアローキーとエンターキーで操作できるようにしよか


44: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:23:13.43 ID:wLeoJNXO0.net
>>36
昔directXのキーボード入力系で詰んだけどいけますかね?


51: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:27:55.16 ID:V9rOhaPO0.net
>>44
コンソールでもできるよ。MSDOSとUNIX(Cygwin)ではやり方が違うが


11: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:05:38.43 ID:XG8IYu860.net
オセロとタイマーと電卓はプログラム初心者がつくる内容だろ
俺も独学で作ったぞ


27: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:12:43.29 ID:e2QVcysz0.net
ひっくり返らないしいきなり角が取れたぞ


33: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:15:33.22 ID:e2QVcysz0.net
x111、y111入力したら0xC0000005で落ちたぞ


34: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:15:57.18 ID:wLeoJNXO0.net
>>33
scanfだかららめぇ


37: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:18:48.83 ID:N49WK9x50.net
scanfの312176って2つ目に入力するにはどうしたらええの?


39: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:19:40.94 ID:wLeoJNXO0.net
>>37
1
エンター
1
みたいな感じで分けてくれると出来るよ


40: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:20:08.74 ID:CpRZWc7xi.net
ゲームの基本が完成してAI作るところからが本当に楽しいところ
とりあえず、素人に勝つ程度なら未経験でも割とすぐ作れる


41: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:20:22.31 ID:CS5k3y1s0.net
オセロぐらいだったらちょっとかじれば誰でも・・・
難しいのが敵AIぐらいか


45: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:25:14.05 ID:7LivGVMl0.net
C言語20年やってるが
>>1は才能あるよマジで

数年後にはスマホアプリ作ってウハウハになれるよ


48: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:25:59.60 ID:wLeoJNXO0.net
>>45
嘘乙

嘘だよね?


49: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:27:06.69 ID:mpaRU/kV0.net
>>48
スマホゲーをCで作るやついると思うの?


53: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:28:07.37 ID:wLeoJNXO0.net
>>49
javaだな

くそやろう!www


54: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:28:25.75 ID:7LivGVMl0.net
いや、マジで
楽しそうにコーディングしてるし
プレイヤーを笑わせる才能もある


55: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:29:44.71 ID:wLeoJNXO0.net
>>54
なんかありがとうございます


56: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:29:49.31 ID:7LivGVMl0.net
ちなみにスマホアプリは
べつにCでもJavaでも言語なんか問わないよ


58: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:32:20.47 ID:wLeoJNXO0.net
>>56
そうなのか
Cがメジャーになってきたらアプリに移行してみようかな


46: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:25:19.85 ID:GdqLgFlz0.net
今のパソコンの処理スピードなら全手筋計算出来るだろ


47: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:25:24.38 ID:wLeoJNXO0.net
判定方法思い浮かんだから出来るかも


57: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:31:34.21 ID:F083rB7j0.net
まずは同じ所に置けるのとどこにでもおけるの改善だな


61: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:35:32.98 ID:wLeoJNXO0.net
Cってgoto使っちゃいけないらしいけど何使えばいいの?


64: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:37:26.56 ID:N49WK9x50.net
>>61
入り口と出口の状態がハッキリしてるなら使っていいと思う
多重ループ抜ける時とか


66: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:38:39.70 ID:mpaRU/kV0.net
>>61
実装している時点で使っても問題ないぞ
上にgoto使うとスパゲッティ言われるが


76: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:58:47.61 ID:QGEtX9Z00.net
(コードの善悪の区別が付かない初心者は)goto禁止は正しいとおもう


62: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:35:50.40 ID:ho16HC4h0.net
独学のプログラミングは大抵見づらい
お願いだからプログラミングを仕事にしようとか思わないでね


65: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:37:29.88 ID:wLeoJNXO0.net
>>62
趣味が一番面白いって知ってるから絶対しないよ


69: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:47:27.33 ID:wLeoJNXO0.net
判定でけたwwww


70: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:49:12.80 ID:V9rOhaPO0.net
この間わずか30分である


71: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:50:15.76 ID:wLeoJNXO0.net
imput:
        //入力
        scanf("",&amp;x,&amp;y);


        //判定方法
        if(n%2==0){
            for(i=0;i<9;i++){
                if (field[i][y]!=2) goto imput;
                if (field[x][i]!=2) goto imput;
                if (field[x+i][y+i]!=2) goto imput;
                if (field[x-i][y-i]!=2) goto imput;
            }
        }

        if(n%2==1){
            for(i=0;i<9;i++){
                if (field[i][y]!=2) goto imput;
                if (field[x][i]!=2) goto imput;
                if (field[x+i][y+i]!=2) goto imput;
                if (field[x-i][y-i]!=2) goto imput;
            }
        }


        //石判定
        if(field[x][y]==1) goto imput;
        if(field[x][y]==2) goto imput;
        if(field[x][y]==5) goto imput;



72: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:50:50.57 ID:mpaRU/kV0.net
おいw


73: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:51:40.60 ID:4oZLPZYQ0.net
判定...


74: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:53:05.47 ID:wLeoJNXO0.net
あちゃー完全にミスったな


75: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:56:37.57 ID:wLeoJNXO0.net
if (field[i][y]!=2 && field[x][i]!=2 && field[x+i][y+i]!=2 && field[x-i][y-i]!=2) goto imput;

これが正解?


79: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:02:27.57 ID:V9rOhaPO0.net
>>75
これが何をしたいのかちょっと日本語で説明してみろ

あとこれ盤面突き抜けるんじゃないのか?


80: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:05:21.27 ID:wLeoJNXO0.net
>>79
もし縦軸と横軸と斜めの全てに2(黒)以外無かったらgoto


83: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:09:35.97 ID:V9rOhaPO0.net
>>80
オセロのルール分かってんのかっつーか斜め2方向しか見てないのはなんでなん


78: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:02:06.01 ID:wLeoJNXO0.net
上下左右斜めの考え方が分からん


85: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:12:24.55 ID:OAu9VzvI0.net
>>78
こういうのは再起を使う


81: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:05:52.16 ID:wLeoJNXO0.net
確かに盤面突き抜けてしまう


84: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:10:56.41 ID:mpaRU/kV0.net
置ける条件は隣接するマスに異なる色がありかつその先に同じ色があるだぞ


106: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:57:02.20 ID:mpaRU/kV0.net
>>84でも条件書いてるが
お前さんのコードだと隣接するだけで置けるっぽいぞ


107: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:00:54.72 ID:wLeoJNXO0.net
>>106
ということは上下左右斜めの判定が機能してないのか・・・


86: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:14:32.66 ID:mpaRU/kV0.net
どうでもいいことだが白と黒は1とー1のほうが使い勝手がいいぞ
手番かどうかで-1かけてやればいいだけだから同じ関数使いまわせる


88: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:16:16.78 ID:wLeoJNXO0.net
>>86
そうか!すごいなそれ


87: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:15:27.70 ID:wLeoJNXO0.net
周りのコマ判定はこれでいいよね?

if(n%2==0){
if(field[x-1][y+1]==2 || field[x][y+1]==2 || field[x+1][y+1]==2
field[x-1][y]==2 || field[x][y]==2 || field[x+1][y]==2
field[x-1][y-1]==2 || field[x][y-1]==2 || field[x+1][y-1]==2)



89: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:17:17.64 ID:mpaRU/kV0.net
>>87
field[x][y]==2
これ置いたところだろw


90: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:18:19.62 ID:wLeoJNXO0.net
>>89
ほんとだwww
集中力切れてきたな


97: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:37:15.75 ID:wLeoJNXO0.net
http://codepad.org/7K54zAZr

これじゃだめなの?
if(field[x-1][y+1]==2  ||  field[x][y+1]==2 ||  field[x+1][y+1]==2 ||field[x-1][y]==2   ||  field[x+1][y]==2   ||field[x-1][y-1]==2 ||  field[x][y-1]==2 ||  field[x+1][y-1]==2){
                    //1置ける

                    for(i=0;i<10;i++){
                        //上方向
                        if(field[x+i][y]==2 || field[x+i][y]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }

                        //下方向
                        if(field[x-i][y]==2 || field[x-i][y]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }


                        //右方向
                        if(field[x][y+i]==2 || field[x][y+i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }

                        //右方向
                        if(field[x][y-i]==2 || field[x][y-i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }


                        //右上ナナメ方向
                        if(field[x+i][y+i]==2 || field[x+i][y+i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }


                        //左上ナナメ方向
                        if(field[x-i][y+i]==2 || field[x-i][y+i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }


                        //右下ナナメ方向
                        if(field[x+i][y-i]==2 || field[x+i][y-i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }


                        //左下ナナメ方向
                        if(field[x-i][y-i]==2 || field[x-i][y-i]==1){
                            field[x][y]=1;
                        }else{
                            goto imput;
                        }
                    }
            }



100: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:45:07.71 ID:OAu9VzvI0.net
>>97
根本的に違う
サイト探して勉強しろよ
多分あるだろ
それとこれは大した問題じゃないがどうもxとyの理解が逆になってるようだ
今のうちに直しておいた方がいい


98: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:38:45.61 ID:wLeoJNXO0.net
ずっと考えてたのに晒した瞬間気づいた・・・


102: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:47:14.35 ID:wLeoJNXO0.net
http://codepad.org/ItuxIH2j

自分では出来てるつもりだけど、何がダメなのかわからん
3,3で置けてしまう
if(n%2==0){

            if(field[x-1][y+1]==2  ||  field[x][y+1]==2 ||  field[x+1][y+1]==2 ||
                field[x-1][y]==2   ||  field[x+1][y]==2   ||
                field[x-1][y-1]==2 ||  field[x][y-1]==2 ||  field[x+1][y-1]==2){
                    //1置ける

                    for(i=0;i<10;i++){
                        //上方向
                        if(field[x+i][y]==2 || field[x+i][y]==1){
                            field[x][y]=1;
                        }

                        //下方向
                        if(field[x-i][y]==2 || field[x-i][y]==1){
                            field[x][y]=1;
                        }

                        //右方向
                        if(field[x][y+i]==2 || field[x][y+i]==1){
                            field[x][y]=1;
                        }

                        //右方向
                        if(field[x][y-i]==2 || field[x][y-i]==1){
                            field[x][y]=1;
                        }

                        //右上ナナメ方向
                        if(field[x+i][y+i]==2 || field[x+i][y+i]==1){
                            field[x][y]=1;
                        }

                        //左上ナナメ方向
                        if(field[x-i][y+i]==2 || field[x-i][y+i]==1){
                            field[x][y]=1;
                        }

                        //右下ナナメ方向
                        if(field[x+i][y-i]==2 || field[x+i][y-i]==1){
                            field[x][y]=1;
                        }

                        //左下ナナメ方向
                        if(field[x-i][y-i]==2 || field[x-i][y-i]==1){
                            field[x][y]=1;
                        }
                    }
            }

            if(field[x][y]!=1) goto imput;
        }



106: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:57:02.20 ID:mpaRU/kV0.net
>>102
脳内コンパイラだからアテにならんが
黒の右上が3,3だよな?


104: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:54:10.66 ID:OAu9VzvI0.net
http://idehideout.fc2web.com/p/rev/00.html
ほら良いサイトあったぞ
ここは再起なんて使ってなくてよりシンプルなやり方でやってるな


105: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 19:55:46.69 ID:wLeoJNXO0.net
>>104
ありがとう

109: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:03:45.45 ID:mpaRU/kV0.net
for(i=0;i<10;i++){
//上方向
if(field[x+i][y]==2 || field[x+i][y]==1){
field[x][y]=1;
}


これでfield[x+i][y]==2は必要あんの?
for(i=0;i<10;i++){これiは1からじゃね?


110: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:05:22.00 ID:wLeoJNXO0.net
>>109
よく考えるとそうだな


112: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:07:57.38 ID:wLeoJNXO0.net
でけたwwwwww
ありがとうwwwwww

次は裏返しなんだよな
できるかなっ!?


113: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:20:14.49 ID:mpaRU/kV0.net
置ける場合のところにfor文ぶち込めばいいだけだがまだこないのか
クッソ見づらいコードになるが現時点で見づらいから問題ないだろw


114: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 20:28:07.14 ID:wLeoJNXO0.net
>>113
クソ見づらいけどできたよ


42: 以下、\(^o^)/でVIPがお送りします 2014/07/22(火) 18:21:27.64 ID:P71eAJ30i.net
おまえらほんと詳しいんだな
関連記事
Androidアプリ作って1年経過した結果wwwww
ニートがAndroidアプリ作ってるんだが 完成しないよぉ(´・ω・`)

引用元 http://viper.2ch.sc/test/read.cgi/news4vip/1406019813/