スロットマシーン 作成
スロットマシーン 作成
スロットの作成について、100個の配列のなかに0〜9の数字が順番に格納され、ランダムに1つ出力し、3つ連続した数字を結果として出力し、それを、3つのリールとして出力したいんですが、やり方がよくわかりません。
結果としては
[1][9][8]
[2][1][9]
[3][2][1]
1がそろいました。
みたいにしたいです。
結果としては
[1][9][8]
[2][1][9]
[3][2][1]
1がそろいました。
みたいにしたいです。
Re: スロットマシーン 作成
自分で作ってみましたが、これだとスロットではないといわれました。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main(void)
{
srand(time(NULL));
int a,b,c,d,e,f,g,h,i;
int coin =10;
a=rand()%9+1;
b=rand()%9+1;
c=rand()%9+1;
d=rand()%9+1;
e=rand()%9+1;
f=rand()%9+1;
g=rand()%9+1;
h=rand()%9+1;
i=rand()%9+1;
printf("slot start\n");
if(a==b&&b==c&&d==e&&e==f&&g==h&&h==i&&a==e&&e==i&&c==e&&e==g){
coin=coin+10;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("BINGO!!\n10枚追加されました。\n現在%d枚です。",coin);
}else if(a==b||b==c||d==e||e==f||g==h||h==i||a==e||e==i||c==e||e==g){
coin=coin+3;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("リーチ\n3枚追加されました。現在%d枚です。\n",coin);
}else{
coin=coin-3;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("NO BINGO\n3枚減りました。現在%d枚です。",coin);
}
return 0;
}
Re: スロットマシーン 作成
最初「スロットでない」の意味が分からなかったのですが、縦に同じ数字があるからだと思います。ゆうtyt さんが書きました:自分で作ってみましたが、これだとスロットではないといわれました。
$ slot start
[7][7][6]
[3][9][5]
[9][8][5]
リーチ
3枚追加されました。現在13枚です。
$ ./a.exe
slot start
[9][3][8]
[1][6][2]
[3][6][7]
NO BINGO
3枚減りました。現在7枚です。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int bingo(int a, int b, int c) {
return (b == a && c == a) ? 1 : 0;
}
int main(void)
{
srand(time(NULL));
int a,b,c,d,e,f,g,h,i;
int coin =10;
a=rand()%9+1;
b=rand()%9+1;
c=rand()%9+1;
do d=rand()%9+1; while (d == a);
do e=rand()%9+1; while (e == b);
do f=rand()%9+1; while (f == c);
do g=rand()%9+1; while (g == a || g == d);
do h=rand()%9+1; while (h == b || h == e);
do i=rand()%9+1; while (i == c || i == f);
printf("slot start\n");
if(bingo(a,b,c)||bingo(d,e,f)||bingo(g,h,i)
|| bingo(a,e,i)||bingo(c,e,g)) {
coin=coin+10;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("BINGO!!\n10枚追加されました。\n現在%d枚です。",coin);
}else if(a==b||b==c||d==e||e==f||g==h||h==i||a==e||e==i||c==e||e==g){
coin=coin+3;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("リーチ\n3枚追加されました。現在%d枚です。\n",coin);
}else{
coin=coin-3;
printf("[%d][%d][%d]\n[%d][%d][%d]\n[%d][%d][%d]\n",a,b,c,d,e,f,g,h,i);
printf("NO BINGO\n3枚減りました。現在%d枚です。",coin);
}
return 0;
}
Re: スロットマシーン 作成
今回は1回分だけ出力するプログラムになっていますが、実際にはGUIのプログラムを簡素化する形で出題者の人は考えているんだと思います。もし、スロットが完全なランダム列であると、数字が周期的に表れないので目押しできないです。ゆうtyt さんが書きました:スロットの作成について、100個の配列のなかに0〜9の数字が順番に格納され、ランダムに1つ出力し、3つ連続した数字を結果として出力し、それを、3つのリールとして出力したい
(出題者の人には、スロットを常識と思うなと言いたいです)
Re: スロットマシーン 作成
Oh...ゆうtyt さんが書きました:スロットの作成について、100個の配列のなかに0〜9の数字が順番に格納され、ランダムに1つ出力し、3つ連続した数字を結果として出力し、それを、3つのリールとして出力したい
この場合、ランダムで値を決めるのは「中心の数」だけでいいと思われますが。。。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: スロットマシーン 作成
#include<stdio.h>
#include<stdlib.h>
int main(){
int a,b,c;
a = rand()%9;
b = rand()%9;
c = rand()%9;
for(int i=-1;i<2;i++){
printf("[%d]",(a+10+i)%10);
printf("[%d]",(b+10+i)%10);
printf("[%d]\n",(c+10+i)%10);
}
}
尚、仕様通りにはしていませんので、課題としてこのまま提出しないでください。
数字を配列にしていなかったり、ビンゴ判定やらなんやらをすっ飛ばしていますので。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: スロットマシーン 作成
まず、スロットの仕様について考える必要があるでしょう。
スロットというのは、リールに描かれた図柄が回転し、その後、停止した図柄の配置によってビンゴを判定するものです。
提示された条件から、要素数100個の配列というのが1つのリールということになるでしょう。
ビンゴ判定は、リールの位置で決まるので、100個の要素のうちどれが先頭となるかをランダムに選択し停止位置としましょう。
それをリール3本分繰り返しましょう。
停止位置の先頭から、3つの要素を比較してビンゴの判定をしましょう。
3つの要素が最後尾と先頭にまたがる可能性がありますので、対策を考えてください。
スロットというのは、リールに描かれた図柄が回転し、その後、停止した図柄の配置によってビンゴを判定するものです。
提示された条件から、要素数100個の配列というのが1つのリールということになるでしょう。
ビンゴ判定は、リールの位置で決まるので、100個の要素のうちどれが先頭となるかをランダムに選択し停止位置としましょう。
それをリール3本分繰り返しましょう。
停止位置の先頭から、3つの要素を比較してビンゴの判定をしましょう。
3つの要素が最後尾と先頭にまたがる可能性がありますので、対策を考えてください。
オフトピック
要素数100個の配列に0~9を順番に格納するという条件だと、配列要らないじゃないか、とも思ったりする。
オフトピック
スロットを作れというお題なのに?あんどーなつ さんが書きました:(出題者の人には、スロットを常識と思うなと言いたいです)
Re: スロットマシーン 作成
おっと、コーディングする上で必要なことはamehiruneさんが示してくれましたね。
Re: スロットマシーン 作成
オフトピック
どうしてみんな、「0~9の数字」という条件なのに乱数が9通りしか出ないプログラムの仕様をそのままにしているんだろう?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
ISLe さんが書きました:オフトピックスロットを作れというお題なのに?あんどーなつ さんが書きました:(出題者の人には、スロットを常識と思うなと言いたいです)
オフトピック
... 現に問題文を読んでも質問者さんはその意図が理解できなかったので配列を実装しなかったじゃないですか。
パチスロ雑誌やインターネットにはパチスロの図柄パターンが載っていますけど、そういうことが頭に入っていない人が問題文を読んでも理解できないじゃないかと言いたかったわけです。
パチスロ雑誌やインターネットにはパチスロの図柄パターンが載っていますけど、そういうことが頭に入っていない人が問題文を読んでも理解できないじゃないかと言いたかったわけです。
Re: スロットマシーン 作成
返事遅くなりました。
コードはこんな感じにしました。
あたりの回数とはずれの回数を出力したいんですがどうやるのでしょうか?
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int reel1[11]={1,2,3,4,5,6,7,8,9,1,2};
int reel2[11]={9,8,7,6,5,4,3,2,1,9,8};
int reel3[11]={1,2,3,4,5,6,7,8,9,1,2};
int main()
{
int a,b,c;
int i;
srand(time(NULL));
for (i=0; i<=100; i++){
if(reel1[a]==reel2[b]&&reel2[b]==reel3[c]&&
reel1[a+1]==reel2[b+1]&&reel2[b+1]==reel3[c+1]&&
reel1[a+2]==reel2[b+2]&&reel2[b+2]==reel3[c+2]&&
reel1[a]==reel2[b+1]&&reel2[b+1]==reel3[c+2]&&
reel1[c]==reel2[b+1]&&reel2[b+1]==reel3[a+2]){
a=rand()%9;
b=rand()%9;
c=rand()%9;
printf("slot start");
printf("[%d][%d][%d]\n",reel1[a],reel2[b],reel3[c]);
printf("[%d][%d][%d]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%d][%d][%d]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("そろいました。");
}else{
a=rand()%9;
b=rand()%9;
c=rand()%9;
printf("slot start\n");
printf("[%d][%d][%d]\n",reel1[a],reel2[b],reel3[c]);
printf("[%d][%d][%d]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%d][%d][%d]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("はずれ\n");
}
}
return 0;
}
あたりの回数とはずれの回数を出力したいんですがどうやるのでしょうか?
Re: スロットマシーン 作成
みけCAT さんが書きました:オフトピックどうしてみんな、「0~9の数字」という条件なのに乱数が9通りしか出ないプログラムの仕様をそのままにしているんだろう?
オフトピック
ああああああしまった、正しくは「a=rand()%10;」でしたね…w
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: スロットマシーン 作成
そもそも、それ、動きました?ゆうtyt さんが書きました:返事遅くなりました。
コードはこんな感じにしました。#include <stdio.h> #include <stdlib.h> #include<time.h> int reel1[11]={1,2,3,4,5,6,7,8,9,1,2}; int reel2[11]={9,8,7,6,5,4,3,2,1,9,8}; int reel3[11]={1,2,3,4,5,6,7,8,9,1,2}; int main() { int a,b,c; int i; srand(time(NULL)); for (i=0; i<=100; i++){ if(reel1[a]==reel2[b]&&reel2[b]==reel3[c]&& reel1[a+1]==reel2[b+1]&&reel2[b+1]==reel3[c+1]&& reel1[a+2]==reel2[b+2]&&reel2[b+2]==reel3[c+2]&& reel1[a]==reel2[b+1]&&reel2[b+1]==reel3[c+2]&& reel1[c]==reel2[b+1]&&reel2[b+1]==reel3[a+2]){ a=rand()%9; b=rand()%9; c=rand()%9; printf("slot start"); printf("[%d][%d][%d]\n",reel1[a],reel2[b],reel3[c]); printf("[%d][%d][%d]\n",reel1[a+1],reel2[b+1],reel3[c+1]); printf("[%d][%d][%d]\n",reel1[a+2],reel2[b+2],reel3[c+2]); printf("そろいました。"); }else{ a=rand()%9; b=rand()%9; c=rand()%9; printf("slot start\n"); printf("[%d][%d][%d]\n",reel1[a],reel2[b],reel3[c]); printf("[%d][%d][%d]\n",reel1[a+1],reel2[b+1],reel3[c+1]); printf("[%d][%d][%d]\n",reel1[a+2],reel2[b+2],reel3[c+2]); printf("はずれ\n"); } } return 0; }
あたりの回数とはずれの回数を出力したいんですがどうやるのでしょうか?
新機能を追加する前に、まずは現ステップをクリアしているかどうかを判断しましょう。
もしかして→未定義動作
オフトピック
あと、「100この配列~」定義を思いっきりぶっ壊してしまっているような気がするのですが大丈夫でしょうか
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: スロットマシーン 作成
オフトピック
もしもこれが、パチスロ製造会社の新人研修で出されたお題だったとしても、ですか?あんどーなつ さんが書きました:... 現に問題文を読んでも質問者さんはその意図が理解できなかったので配列を実装しなかったじゃないですか。
パチスロ雑誌やインターネットにはパチスロの図柄パターンが載っていますけど、そういうことが頭に入っていない人が問題文を読んでも理解できないじゃないかと言いたかったわけです。
想像をぶつけても意味ないですが、はっきりしているのは「スロットを作る」ことが求められているということ。
だったら、質問者にも回答者にも「スロットとは何か」を理解する・理解していることが求められるのではないでしょうかね。
スロットと関係なければ・関係あるかどうか分からなければ、お題を無視していいし、いいかげんな回答をしてもいい、なんてことになったら、質問に対して回答するという形式そのものの否定ですよね。
質問の中に矛盾があるとか、こうしたほうがもっといいとか、指摘するのとは次元が違う。
Re: スロットマシーン 作成
リールを表現する配列に関してはこうしろ、って言われただけなんじゃなかろうか。ゆうtyt さんが書きました:コードはこれでいいと言われました。
Re: スロットマシーン 作成
オフトピック
今更自分の過ちを弁解するわけじゃありませんが、これが大学の講義の課題で、この設問だったら、私の場合教授に「不健全だ」と食って掛かって留年していたかもしれませんね。
Re: スロットマシーン 作成
コードがだめだったら、コードがだめって言いますよね。ISLe さんが書きました:リールを表現する配列に関してはこうしろ、って言われただけなんじゃなかろうか。ゆうtyt さんが書きました:コードはこれでいいと言われました。
それとも完成しているかどうかは察しろっていうタイプの先輩ですか?
そもそも質問自体雑ですよね。
単に何かさせたかっただけじゃないですかね?教わっている人よりも教えている人のほうが忙しいというのはどこでもありそうな話ですし。ゆうtyt さんが書きました:スロットの作成について、100個の配列のなかに0〜9の数字が順番に格納され、ランダムに1つ出力し、3つ連続した数字を結果として出力し、それを、3つのリールとして出力したいんですが、やり方がよくわかりません。
Re: スロットマシーン 作成
リールに関してはこれでいいと言われました。
しかし、もう一度確認したところif文が正しくないようで、数字がそろっても「そろいました」と出力されません。どこがまちがってるのかおしえてください。
しかし、もう一度確認したところif文が正しくないようで、数字がそろっても「そろいました」と出力されません。どこがまちがってるのかおしえてください。
Re: スロットマシーン 作成
最初のif文で&&が9個並んでいますが、[-,_,^,/,\]の5つの組み合わせについて(何々&&何々&&何々)を5つ作ってそれぞれを||でつながないといけなかったと思います。
Re: スロットマシーン 作成
ISLe さんゆうtyt さんが書きました:リールに関してはこれでいいと言われました。
しかし、もう一度確認したところif文が正しくないようで、数字がそろっても「そろいました」と出力されません。どこがまちがってるのかおしえてください。
すみませんでした。目視かテストでプログラムが動作しないことを確認されていたのですね。
Re: スロットマシーン 作成
[-,_,^,/,\]の5つの組み合わせについての部分が理解できないのですがどういう意味ですか?あんどーなつ さんが書きました:最初のif文で&&が9個並んでいますが、[-,_,^,/,\]の5つの組み合わせについて(何々&&何々&&何々)を5つ作ってそれぞれを||でつながないといけなかったと思います。
Re: スロットマシーン 作成
3個の数字が同じかを判定するので、それぞれの組み合わせについて&&でつなぐ条件式は2個(a==b && b==c的な感じ)でいいと思います。あんどーなつ さんが書きました:[-,_,^,/,\]の5つの組み合わせについて(何々&&何々&&何々)を5つ作って
オフトピック
判定する場所の情報を配列に入れておいてループで判定する、などのもう少しいい方法がある気がしますが、仕様を満たせばとりあえずはいいでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
if(reel1[a]==reel2[b]&& reel2[b]==reel3[c])
{
a=rand()%9;
b=rand()%9;
c=rand()%9;
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("そろいました---------------。\n");
、slot start
[4][1][2]
[5][9][3]
[6][8][4]
そろいました---------------。
になりました。
4,1,2でそろっていないのになのになぜこのように表示されたのですか?
Re: スロットマシーン 作成
せっかく揃っても、また乱数を使ってバラバラにしてしまうからでしょう。ゆうtyt さんが書きました:4,1,2でそろっていないのになのになぜこのように表示されたのですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
a,b,cの乱数をifとforの間にいれればいいということであってますか?みけCAT さんが書きました:せっかく揃っても、また乱数を使ってバラバラにしてしまうからでしょう。ゆうtyt さんが書きました:4,1,2でそろっていないのになのになぜこのように表示されたのですか?
Re: スロットマシーン 作成
というようにすればいいでしょう。ゆうtyt さんが書きました:a,b,cの乱数をifとforの間にいれればいいということであってますか?
乱数をifとforの間にいれるだけでなく、判定後に判定に使ったデータを破壊する処理を消さなければなりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
すいません、typoです。ゆうtyt さんが書きました:すいません。
リール(乱数)に余計な結果を加えずに判定結果を表示する
余計な結果とはどういうことですか?
正しくは「余計な変化」です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
みけCAT さん、ご指摘ありがとうございます。みけCAT さんが書きました:3個の数字が同じかを判定するので、それぞれの組み合わせについて&&でつなぐ条件式は2個(a==b && b==c的な感じ)でいいと思います。あんどーなつ さんが書きました:[-,_,^,/,\]の5つの組み合わせについて(何々&&何々&&何々)を5つ作って
Re: スロットマシーン 作成
オフトピック
質問者さんの書いている文章は、質問者さんのフィルターを通して書かれた文章なのだから、フィルターを通す前の内容を想像してみました。あんどーなつ さんが書きました:コードがだめだったら、コードがだめって言いますよね。ISLe さんが書きました:リールを表現する配列に関してはこうしろ、って言われただけなんじゃなかろうか。ゆうtyt さんが書きました:コードはこれでいいと言われました。
それとも完成しているかどうかは察しろっていうタイプの先輩ですか?
質問者さんの立場になって考えた結果です。
初心者は質問するなと言ってる?あんどーなつ さんが書きました:そもそも質問自体雑ですよね。
Re: スロットマシーン 作成
ISLe さんが書きました:初心者は質問するなと言ってる?[/offtopic]あんどーなつ さんが書きました:そもそも質問自体雑ですよね。
オフトピック
言っていないです。
質問者の人が自分で思いついた質問ではなくて、他の人が出した課題だと思ったので、その人の問題の出し方が雑だという意味です。
質問者の人が自分で思いついた質問ではなくて、他の人が出した課題だと思ったので、その人の問題の出し方が雑だという意味です。
Re: スロットマシーン 作成
オフトピック
質問者さんが書いた文章から、どうやったら、出題者が出した問題の『完全な』内容が分かるのでしょうか。あんどーなつ さんが書きました:言っていないです。
質問者の人が自分で思いついた質問ではなくて、他の人が出した課題だと思ったので、その人の問題の出し方が雑だという意味です。
質問者さんのフィルターを通した結果なのだから、質問者さんに雑だと文句を言っているに等しい、ということが理解できませんか。
あるいは、もしかして、あんどーなつさんは本物のエスパーですか?
出題者が出した問題の『完全な』内容が分かってておっしゃっているのだとしたら申し訳ないです。ごめんなさい。
Re: スロットマシーン 作成
うっそぉ。私の目がおかしくなったんですかね…?ゆうtyt さんが書きました:動作はしました。
コードはこれでいいと言われました。
まず、int a,b,cの3つの変数を宣言しています。この時点で初期化はされていません。
for文でループ開始です。i=0となります。この時点でa,b,cはまだ初期化されていません。
if文で条件分岐です。if(reel[a]== …おや?
因みにコピペして実行してみましたが(環境:VC++2008EE)、
コンパイルは通ってもwarningがでるし実行してもエラーが発生するし、お話になりません。
本当にこれでいいと言われたんですね?
オフトピック
おっかしいなぁ…私、何か見落としてるところありますかね…
うっかりがあるかもしれませんので、私が間違ってたらすぐにご指摘ください。
うっかりがあるかもしれませんので、私が間違ってたらすぐにご指摘ください。
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※
Re: スロットマシーン 作成
おかしいのはジャッジの目かもしれないですよ。amehirune さんが書きました:うっそぉ。私の目がおかしくなったんですかね…?ゆうtyt さんが書きました:動作はしました。
コードはこれでいいと言われました。
あるいは、もしかしたら問題がおかしいことを認めて、もうこの問題はここまででいい(別の問題をやれ)という意味かもしれないですし。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
#include <stdio.h>
#include <stdlib.h>
char reel1[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel2[11]={'9','8','7','6','5','4','3','2','1','9','8'};
char reel3[11]={'1','2','3','4','5','6','7','8','9','1','2'};
int main()
{
int a,b,c;
int i;
int count=0;
srand(100);
for (i=0; i<=100; i++){
a=rand()%9;
b=rand()%9;
c=rand()%9;
if((reel1[a]==reel2[b]&& reel2[b]==reel3[c])||
(reel1[a+1]==reel2[b+1]&& reel2[b+1]==reel3[c+1])||
(reel1[a+2]==reel2[b+2]&& reel2[b+2]==reel3[c+2])||
(reel1[a]==reel2[b+1]&& reel2[b+1]==reel3[c+2])||
(reel3[c]==reel2[b+1]&& reel2[b+1]==reel3[a+2]))
{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("そろいました---------------。\n");
count++;
}else{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("はずれ\n");
}
}
printf("そろったのは%d回です。\n",count);
return 0;
}
そろったらちゃんと「そろった」と出力されましたが、
余計な結果というのはよくわかりませんでした。
Re: スロットマシーン 作成
rand()%9は0~8の値がでるんですよね?
reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
Re: スロットマシーン 作成
オフトピック
No.13のコードは、No.7で書いたリールの末尾と先頭をまたがる対策が、スマートに解決できるコードになってた。
このコードがすんなり出てくることに、スロットを作ることに対して手慣れていると感じた。
そこが出題者の指示であろうことは間違いないと思った。
そこから、質問者さんのフィルターを通す前の指示の内容は
「配列の部分はもう『これでいい』からあとの部分を考えろ」
というものであろうと想像した(No.18)。
質問者の立場に立つ、あるいは寄り添うというのは、鵜呑みにすることとは違うと考える。
「実行しようとしたらわけのわからないエラーが出て実行できません」
という質問に
わけのわからんエラーを出すとはとんでもない処理系だな
という回答をするのと同じことがいまこのトピックで行われている、気がする。
質問者さんのフィルターの精度が低いことは、ここまでのやり取りで(というか最初から)明らか。
片道だけでこの状況なのだから、本当にそう言われたんですか?と聞いて、返ってくるものが原形を留めないであろうことは容易に想像できる、気がする。
本当はこう言われたんじゃないですか?であれば一往復減らせるのに、なぜだかそういう流れにならない。
質問者さんは悪くない。
質問掲示板にこういう質問が投稿されるのは想定内。
このコードがすんなり出てくることに、スロットを作ることに対して手慣れていると感じた。
そこが出題者の指示であろうことは間違いないと思った。
そこから、質問者さんのフィルターを通す前の指示の内容は
「配列の部分はもう『これでいい』からあとの部分を考えろ」
というものであろうと想像した(No.18)。
質問者の立場に立つ、あるいは寄り添うというのは、鵜呑みにすることとは違うと考える。
「実行しようとしたらわけのわからないエラーが出て実行できません」
という質問に
わけのわからんエラーを出すとはとんでもない処理系だな
という回答をするのと同じことがいまこのトピックで行われている、気がする。
質問者さんのフィルターの精度が低いことは、ここまでのやり取りで(というか最初から)明らか。
片道だけでこの状況なのだから、本当にそう言われたんですか?と聞いて、返ってくるものが原形を留めないであろうことは容易に想像できる、気がする。
本当はこう言われたんじゃないですか?であれば一往復減らせるのに、なぜだかそういう流れにならない。
質問者さんは悪くない。
質問掲示板にこういう質問が投稿されるのは想定内。
Re: スロットマシーン 作成
オフトピック
人間の考えている事なんて分からないことだらけだと思いますが、事の顛末とこの掲示板にいつからいたのかということから考えて、ISLeさんのほうが正しそうだとは思います(逆に言うとNo.7->No.13->No.18とかのことはいまださっぱりわからないし、わかるときが来ないと分からないと思ってます)。
それよりも私が不可解だと思っていたのは、私のつぶやきのような発言にISLeさんが食って掛かったかのように私の方で感じたことです。おそらく私の方で社会一般の人たちがスロットに関して感じている思い入れを私の方で理解できていなかった、だからスロットを軽蔑するような発言をした、だから今回はISLeさんが怒った、という風に認識しています。
私が至らないところ、というよりも無駄に年食ってて変な経験を積んでいるから融通聞かなくなっているところもあって、変なところで目を付けられているのだなと少しは感じています。
もう少し周りに気を配って発言や書き込みをするようにいたします。
それよりも私が不可解だと思っていたのは、私のつぶやきのような発言にISLeさんが食って掛かったかのように私の方で感じたことです。おそらく私の方で社会一般の人たちがスロットに関して感じている思い入れを私の方で理解できていなかった、だからスロットを軽蔑するような発言をした、だから今回はISLeさんが怒った、という風に認識しています。
私が至らないところ、というよりも無駄に年食ってて変な経験を積んでいるから融通聞かなくなっているところもあって、変なところで目を付けられているのだなと少しは感じています。
もう少し周りに気を配って発言や書き込みをするようにいたします。
Re: スロットマシーン 作成
私に配慮がなかったのは申し訳ないと思います。
回答してくれた方々ありがとうございました。
最後に
回答してくれた方々ありがとうございました。
最後に
この質問だけ回答お願いします。ゆうtyt さんが書きました:rand()%9は0~8の値がでるんですよね?
reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
Re: スロットマシーン 作成
ゲーム’iro-ne"にしてみました。(色音)。0.5FPSです(まだ正確にできてません)。一応動くのでわかるはずです。
#include <stdio.h>
#include <stdlib.h>
//---iro-ne>
#include <windows.h>
void draw(int,int,int,char*);
HANDLE Stdout;int color=14;int tamaX[16],tamaY[16];int ind=0;//<
char reel1[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel2[11]={'9','8','7','6','5','4','3','2','1','9','8'};
char reel3[11]={'1','2','3','4','5','6','7','8','9','1','2'};
int main()
{
int a,b,c;
int i;
int count=0;
srand(100);
//---iro-ne>
Stdout=GetStdHandle(STD_OUTPUT_HANDLE);for(;;){system("cls");
for(ind=0;ind<16;ind++){color=(rand()%10)+2;tamaX[ind]=rand()%64;
tamaY[ind]=rand() %20;draw(tamaX[ind],tamaY[ind],color,"@");}draw(0,5,color,">");//< */
//for (i=0; i<=100; i++){
a=rand()%9;
b=rand()%9;
c=rand()%9;
if((reel1[a]==reel2[b]&& reel2[b]==reel3[c])||
(reel1[a+1]==reel2[b+1]&& reel2[b+1]==reel3[c+1])||
(reel1[a+2]==reel2[b+2]&& reel2[b+2]==reel3[c+2])||
(reel1[a]==reel2[b+1]&& reel2[b+1]==reel3[c+2])||
(reel3[c]==reel2[b+1]&& reel2[b+1]==reel3[a+2]))
{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("そろいました---------------。\n");
count++;
}else{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("はずれ\n");
} Sleep(2000);Beep(440,200);Beep(494,200);Beep(554,200);//---iro-ne
}
printf("そろったのは%d回です。\n",count);
return 0;
}
//---iro-ne
void draw(int x, int y, int col,char* c) {//座標x,yに文字列を出力
COORD coord;coord.X=x;coord.Y=y;SetConsoleTextAttribute(Stdout,col | 8);
SetConsoleCursorPosition(Stdout, coord);printf(c);
}//<
Re: スロットマシーン 作成
この質問だけ回答お願いします。[/quote]ゆうtyt さんが書きました:rand()%9は0~8の値がでるんですよね?
reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
>rand()%9は0~8の値がでるんですよね?
はい。
>reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
主語がないので回答できません。文脈から判断すればいいのでしょうが、あえてしないです。
それをして間違えるともっとあほくさくなるからです。
質問者の人に言うのも筋違いですが、勢いで読み間違えて回答することもありうるので、
その時は許してあげてください。
>reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
はい。
Re: スロットマシーン 作成
オフトピック
わたしは正しいか正しくないかという話はしてません。あんどーなつ さんが書きました:人間の考えている事なんて分からないことだらけだと思いますが、事の顛末とこの掲示板にいつからいたのかということから考えて、ISLeさんのほうが正しそうだとは思います(逆に言うとNo.7->No.13->No.18とかのことはいまださっぱりわからないし、わかるときが来ないと分からないと思ってます)。
根拠を求めているだけです。
だから、わたしはわたしの根拠を説明しました。
スロット云々はまったく関係ありません。あんどーなつ さんが書きました:それよりも私が不可解だと思っていたのは、私のつぶやきのような発言にISLeさんが食って掛かったかのように私の方で感じたことです。おそらく私の方で社会一般の人たちがスロットに関して感じている思い入れを私の方で理解できていなかった、だからスロットを軽蔑するような発言をした、だから今回はISLeさんが怒った、という風に認識しています。
わたしが気になるのは、自分勝手な解釈で回答しているかのようである、という一点だけです。
別のトピックですが、あんどーなつさんは、あんどーなつさんがGPL/LGPLに関わりたくないという個人的な理由だけで、公式で質問しろと門前払いしていますよね。
GPL/LGPLが掲示板で質問することに何の影響があるか、知らずに、調べもせずに。
立派な根拠があってわたしが気付いていないだけなのだとしたら申し訳ないですが、こじれる前に、どうして説明してくれないのですか。
かりに、もし、根拠もなくそんなことをしているのだとしたら、回答しない、という選択をしてほしいと思うのですが。
根拠のない投稿をした者が必ず吐き捨てるセリフですね。あんどーなつ さんが書きました:私が至らないところ、というよりも無駄に年食ってて変な経験を積んでいるから融通聞かなくなっているところもあって、変なところで目を付けられているのだなと少しは感じています。
過去ログにはあんどーなつさんと同じ行動をした方の記録がたくさんありますよ。
少なくともわたしはそんなこと求めていません。あんどーなつ さんが書きました:もう少し周りに気を配って発言や書き込みをするようにいたします。
オフトピック
わたしから以外にも指摘はあるのに、わたしを孤立させて悪者に仕立て上げるのがうまい。
というか、わたし以外に指摘されたことは既に忘れてしまっているのでしょう。
本気で忘れているから、そこに書いてあることだけを見ると妙に説得力があったりする。
周りに気を配ることができるのなら、忘れたりしないでしょうに。
過去に同じ行動をした方たちもそうでした。
そしてここの管理人さんはそういう方たちの味方なんですよね。
というか、わたし以外に指摘されたことは既に忘れてしまっているのでしょう。
本気で忘れているから、そこに書いてあることだけを見ると妙に説得力があったりする。
周りに気を配ることができるのなら、忘れたりしないでしょうに。
過去に同じ行動をした方たちもそうでした。
そしてここの管理人さんはそういう方たちの味方なんですよね。
Re: スロットマシーン 作成
オフトピック
この回答が既にあほくさいと思いますけどね。あんどーなつ さんが書きました:主語がないので回答できません。文脈から判断すればいいのでしょうが、あえてしないです。
それをして間違えるともっとあほくさくなるからです。
質問者の人に言うのも筋違いですが、勢いで読み間違えて回答することもありうるので、
その時は許してあげてください。
どうしてNo.40に対する質問だというのが分からないんですかね。
どうしてあんどーなつさんが「回答できません」って言い切ってしまうんですかね。
「回答できません」って言い切られてしまったあとに、他の回答者がどんな顔して回答したらいいんですかね。
Re: スロットマシーン 作成
オフトピック
ISLe さん
私がこの掲示板の何人かから警告を受けていたのは認めます。
自分の発言がいささか強引・言い過ぎているのも認めます。
だからこの掲示板に二度と来ません。約束します。
しかし、あなたのやり方もいささか強引です。
管理人や私以外の人間の非難まで始めているじゃないですか。正直怖いですよ。
今回の件に関しては単に仕事でなく道楽だからというのと、私が新参者だから退くだけです。
私がこの掲示板の何人かから警告を受けていたのは認めます。
自分の発言がいささか強引・言い過ぎているのも認めます。
だからこの掲示板に二度と来ません。約束します。
しかし、あなたのやり方もいささか強引です。
管理人や私以外の人間の非難まで始めているじゃないですか。正直怖いですよ。
今回の件に関しては単に仕事でなく道楽だからというのと、私が新参者だから退くだけです。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: スロットマシーン 作成
トピックの雲行きが怪しくなってきたので出現しました。
みんな仲良く気持ちよく掲示板を利用しましょう(^o^)b
みんな仲良く気持ちよく掲示板を利用しましょう(^o^)b
Re: スロットマシーン 作成
>rand()%9は0~8の値がでるんですよね?
>reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
>reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
合っていると思います.
自信が無い場合には そこの部分だけしかない小さいテストプログラム みたいなのを別途作って確かめてみる等するとよいですよ.
>reel1[rand()%9]にしているので、reel1[0]〜[8]が出力されると思ったのですが、違うのですか?
>reel1[0]には”1”が入っているので”1”が出力されるってことではないのですか?
合っていると思います.
自信が無い場合には そこの部分だけしかない小さいテストプログラム みたいなのを別途作って確かめてみる等するとよいですよ.
Re: スロットマシーン 作成
質問の回答ありがとうございます。
C言語と関係ないのですが、プログラムを実行したら、100回中5回数字が揃ったので確率は5%とわかるのですが、計算で数字が揃う確率を比較しようと思いまして。計算してみたのですが、あっているか添削してください。
1/9*1/9*1/9*5*9=45/729 でいいのですか?
仮に1をそろえるとして1/9*1/9*1/9
5パターンあるので×5
数字が1~9まであるので×9
C言語と関係ないのですが、プログラムを実行したら、100回中5回数字が揃ったので確率は5%とわかるのですが、計算で数字が揃う確率を比較しようと思いまして。計算してみたのですが、あっているか添削してください。
1/9*1/9*1/9*5*9=45/729 でいいのですか?
仮に1をそろえるとして1/9*1/9*1/9
5パターンあるので×5
数字が1~9まであるので×9
Re: スロットマシーン 作成
数学は難しそうなので、とりあえずプログラムで計算するといいでしょう。
各リールの位置は独立に一様分布で決まるとすると、以下のようになるでしょう。
出力
各リールの位置は独立に一様分布で決まるとすると、以下のようになるでしょう。
#include <stdio.h>
int gcd(int a, int b)
{
int r;
while (b > 0){
r = a % b;
a = b;
b = r;
}
return a;
}
char reel1[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel2[11]={'9','8','7','6','5','4','3','2','1','9','8'};
char reel3[11]={'1','2','3','4','5','6','7','8','9','1','2'};
int main(void)
{
int a,b,c;
int count=0, allcount = 0, g;
for (a=0; a<9; a++){
for (b=0; b<9; b++){
for (c=0; c<9; c++) {
allcount++;
if((reel1[a]==reel2[b]&& reel2[b]==reel3[c])||
(reel1[a+1]==reel2[b+1]&& reel2[b+1]==reel3[c+1])||
(reel1[a+2]==reel2[b+2]&& reel2[b+2]==reel3[c+2])||
(reel1[a]==reel2[b+1]&& reel2[b+1]==reel3[c+2])||
(reel3[c]==reel2[b+1]&& reel2[b+1]==reel3[a+2]))
{
count++;
}
}
}
}
g = gcd(count, allcount);
printf("確率は%d/%d (%d/%d)です。\n", count, allcount, count / g, allcount / g);
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
本当に100回中ですか?ゆうtyt さんが書きました:プログラムを実行したら、100回中5回数字が揃ったので確率は5%とわかるのですが
101回中ではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
i<0;i<=100;i++などというコードはここには見当たりません。ゆうtyt さんが書きました:すいません
for文の
i<0;i<=100;i++
のところは、
i<1;i<=100;i++
に修正してから実行しました。
それぞれi=0;i<=100;i++、i=1;i<=100;i++のことですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
[quote="ゆうtyt" id=3,18669,141896]
20行目のことです。
これだと101回実行してしまうので、そこを指摘してくれたと解釈しました。
#include <stdio.h>
#include <stdlib.h>
char reel1[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel2[11]={'9','8','7','6','5','4','3','2','1','9','8'};
char reel3[11]={'1','2','3','4','5','6','7','8','9','1','2'};
int main()
{
int a,b,c;
int i;
int count=0;
srand(100);
for (i=0; i<=100; i++){
a=rand()%9;
b=rand()%9;
c=rand()%9;
if((reel1[a]==reel2[b]&& reel2[b]==reel3[c])||
(reel1[a+1]==reel2[b+1]&& reel2[b+1]==reel3[c+1])||
(reel1[a+2]==reel2[b+2]&& reel2[b+2]==reel3[c+2])||
(reel1[a]==reel2[b+1]&& reel2[b+1]==reel3[c+2])||
(reel3[c]==reel2[b+1]&& reel2[b+1]==reel3[a+2]))
{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("そろいました---------------。\n");
count++;
}else{
printf("slot start\n");
printf("[%c][%c][%c]\n",reel1[a],reel2[b],reel3[c]);
printf("[%c][%c][%c]\n",reel1[a+1],reel2[b+1],reel3[c+1]);
printf("[%c][%c][%c]\n",reel1[a+2],reel2[b+2],reel3[c+2]);
printf("はずれ\n");
}
}
printf("そろったのは%d回です。\n",count);
return 0;
}
これだと101回実行してしまうので、そこを指摘してくれたと解釈しました。
Re: スロットマシーン 作成
>1/9*1/9*1/9*5*9=45/729 でいいのですか?
うーん,どうなんでしょう.
並びのパターンとして
・斜めに揃うパターンが,2パターン(左上→右下方向 と 右上→左下方向)
・横に揃うパターンが,1パターン(現状,必ず3行同時に揃う)
で,それぞれの並びについて,数字が9パターン
なので… えっと……
( 2*(1/9)^3 + 1*(1/9)^3 )*9 = 3*(1/9)^2 = 1/27
3.7% くらい?
うーん,どうなんでしょう.
並びのパターンとして
・斜めに揃うパターンが,2パターン(左上→右下方向 と 右上→左下方向)
・横に揃うパターンが,1パターン(現状,必ず3行同時に揃う)
で,それぞれの並びについて,数字が9パターン
なので… えっと……
( 2*(1/9)^3 + 1*(1/9)^3 )*9 = 3*(1/9)^2 = 1/27
3.7% くらい?
Re: スロットマシーン 作成
usao さんが書きました:並びのパターンとして
・斜めに揃うパターンが,2パターン(左上→右下方向 と 右上→左下方向)
・横に揃うパターンが,1パターン(現状,必ず3行同時に揃う)
で,それぞれの並びについて,数字が9パターン
なので… えっと……
( 2*(1/9)^3 + 1*(1/9)^3 )*9 = 3*(1/9)^2 = 1/27
3.7% くらい?
なるほど、リールの向きを揃えると揃う確率が変わるのですね。ゆうtyt さんが書きました:3つのリールのうち1つは降順にしているので横の並びは3パターンで計算しました
#include <stdio.h>
int gcd(int a, int b)
{
int r;
while (b > 0){
r = a % b;
a = b;
b = r;
}
return a;
}
char reel1[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel2[11]={'1','2','3','4','5','6','7','8','9','1','2'};
char reel3[11]={'1','2','3','4','5','6','7','8','9','1','2'};
int main(void)
{
int a,b,c;
int count=0, allcount = 0, g;
for (a=0; a<9; a++){
for (b=0; b<9; b++){
for (c=0; c<9; c++) {
allcount++;
if((reel1[a]==reel2[b]&& reel2[b]==reel3[c])||
(reel1[a+1]==reel2[b+1]&& reel2[b+1]==reel3[c+1])||
(reel1[a+2]==reel2[b+2]&& reel2[b+2]==reel3[c+2])||
(reel1[a]==reel2[b+1]&& reel2[b+1]==reel3[c+2])||
(reel3[c]==reel2[b+1]&& reel2[b+1]==reel3[a+2]))
{
count++;
}
}
}
}
g = gcd(count, allcount);
printf("確率は%d/%d (%d/%d)です。\n", count, allcount, count / g, allcount / g);
return 0;
}
はい。ゆうtyt さんが書きました:結果から考察をするんですが、理論上、揃う確率は約6%なんですが、乱数だと、100回中4回、6回、9回など、揃う回数に誤差があるのですか?
1/6の確率で1が出るサイコロを6回振っても1がちょうど1回出るとは限らないのと似ていますね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: スロットマシーン 作成
数字に重みを知けたいんですが、例えば1が揃ったらコインが1枚追加され、2と3は2枚、7は10枚にするにはどうしたらよいですか?
switch を使って考えようとしましたが、
switch () の()になんて書けばいいのかわかりません。
switch を使って考えようとしましたが、
switch () の()になんて書けばいいのかわかりません。