[公告] 痞客邦新服務上線 每日星座運勢測算[公告] 痞客邦應用市集全新改版![公告] 痞客邦「應用市集」新 App 上架-iFontCloud Professional[公告] 痞客邦後台發表文章提供插入多張圖片新功能[公告]痞客邦新服務上線 部落客商店聚集就在《痞市集》
亂貼小站公告欄
/*  http://tw.knowledge.yahoo.com/question/question?qid=1608123002894
發問者:
    用”C語言”做出骰子比大小 (急)
    
    我需要一個用"C語言"做的程式
    題目:兩顆骰子比大小的遊戲 然後要有得分
    有內掛尤佳!
    程式設計不須太複雜!!

以下是他提供的一個同學寫的程式

發問者說
    上面是我同學做的 可以做成這樣嗎?
    (請幫忙加以修改)

這個程式我怎麼看都好像是猜一個點數的大或小而已
所以我就動手把它改一下

甚至 如果在懶一點
亂數直接生產在 1~2 的範圍就好了
根本不必生產 1~6
*/

/*
#include
#include
#include
int main(int argc, char *argv[])
{
  int x,y,z=100;
  srand(time(NULL));//整個程式裡面這個函式最好只執行一次
  while(z>0)
  {
    x=rand()%6+1;
    do{
      printf("請猜你所骰出的點數 (1)小(2)大 -> ");
      scanf("%d",&y);
    }while(y>2 || y<1);
    if((x-1)/3+1==y)
    {
      printf("您贏了\n");
      z=z+10;
    }
    else
    {
      printf("您輸了\n");
      z=z-10;
    }
    printf("您的得分為%d\n",z);
  }
  system("PAUSE");
  return 0;
}
//*/

/*
我覺得其他兩個人回答的東西都還算不錯

發問者:
    最後一個問題:輸入英文會掛點 要怎克服阿?

第一個回答者阿茂 :
    那就不要輸入英文阿(開玩笑的 @_@!!)
    不過通常問幾分的話應該都會輸入數字不會說想到要輸入英文
    還有我沒想過這問題所以也沒研究過
    你等高手回答吧
 
我就來回答這個曾經困擾過我的問題吧
*/
#include
#include

int special_scanf()//雖然這樣做功能會受限,可是這樣輸入英文就不會掛點
{
  char ca[100];
  scanf("%s",ca);
  if(strlen(ca)==1 && ca[0]>='1' && ca[0]<='2')
    return ca[0]-'0'+0;
  else return -1;
}

int main()
{
  int ia,ib,in,score=0,i;
  srand(time(NULL));
  for(i=0;i<5;i++) //比幾次
  {
    system("cls");
    ia = rand() %6+1;
    ib = rand() %6+1;
    printf("第 %d 回合",i+1);
    do{
      printf("請選比小還是比大 (1)小(2)大 -> ");
      in=special_scanf();
    }while(in==-1);
    printf("你的點數 : %d  電腦的點數 : %d\n", ia, ib);
    if(ia == ib)printf("平手\n");
    else if((ia > ib) ^ (2-in))
    {
      printf("你贏了\n");
      score += 100;
    }
    else
    {
      printf("你輸了\n");
      score -= 100;
    }
    printf("你的分數:%d\n", score);
    system("PAUSE");
  }
}


//以下是於980104下午1點多新增的內容
#include
#include

int special_scanf()
{
  char ca[100];
  scanf("%s",ca);
  if(strlen(ca)==1 && ((ca[0]>='1' && ca[0]<='3') || ca[0]=='5'))
    return ca[0]-'0'+0;
  else return -1;
}

int main(int argc, char *argv[])
{
  int x,y,z=0;
  srand(time(NULL));//整個程式裡面這個函式最好只執行一次
  while(1)
  {
    do{
      printf("請猜你所骰出的點數 (1)小(2)大(3)離開遊戲 -> ");
      y=special_scanf();
    }while(y>5 || y<1);
   
    x=rand()%6+1;
    if(y==3)break;
    else if(y==5)z+=1000000000;
    else if((x-1)/3+1==y)
    {
      printf("您贏了\n");
      z=z+100;
    }
    else
    {
      printf("您輸了\n");
      z=z-100;
    }
    printf("您的得分為%d\n",z);
  }
  system("PAUSE");
  return 0;
}

Posted by 和風信使 at 痞客邦 PIXNET 留言(2) 引用(0) 人氣()


open trackbacks list Trackbacks (0)

留言列表 (2)

Post Comment
  • alan6541
  • 我來囉<br />
    <br />
    因為最近學校要考試 所以不能常碰電腦囉<br />
    <br />
    下面這是我做的 可以幫我修改一下嗎(裡面有後門 輸入4 可以加很多分)<br />
    #include <stdio.h><br />
    #include <stdlib.h><br />
    #include <time.h><br />
    int main(int argc, char *argv[])<br />
    {<br />
    int i,x,y,score=100,a=0; <br />
    while(score>0)<br />
    {<br />
    time_t tnow;<br />
    srand(time(&tnow));<br />
    x=rand()%6+1;<br />
    printf("請輸入1押小,2押大:");<br />
    scanf("%d",&y);<br />
    if(y==04)<br />
    printf("偷偷走後門喔!!"); <br />
    {<br />
    <br />
    a=1; <br />
    score=score+1010100;<br />
    }<br />
    if(a==0)<br />
    {<br />
    if(y>2 || y<1)<br />
    printf("請重新輸入選擇&#92;n");<br />
    if(3>=x && x>=1 && y==1)<br />
    {<br />
    printf("您贏了&#92;n");<br />
    score=score+100;<br />
    } <br />
    if(3>=x && x>=1 && y==2)<br />
    {<br />
    printf("您輸了&#92;n");<br />
    score=score-100;<br />
    }<br />
    if(6>=x && x>=4 && y==2)<br />
    {<br />
    printf("您贏了&#92;n");<br />
    score=score+100;<br />
    }<br />
    if(6>=x && x>=4 && y==1)<br />
    {<br />
    printf("您輸了&#92;n");<br />
    score=score-100;<br />
    } <br />
    }<br />
    printf("您的得分為%d&#92;n",score);<br />
    a=0;<br />
    <br />
    } <br />
    system("PAUSE"); <br />
    return 0;<br />
    }
  • alan6541
  • 上面那個是錯的 這才是改過的<br />
    #include <stdio.h><br />
    #include <stdlib.h><br />
    #include <time.h><br />
    int main(int argc, char *argv[])<br />
    {<br />
    int i,x,y,score=100,a=0; <br />
    while(score>0)<br />
    {<br />
    time_t tnow;<br />
    srand(time(&tnow));<br />
    x=rand()%6+1;<br />
    printf("請輸入1押小,2押大:");<br />
    scanf("%d",&y);<br />
    if(y==04)<br />
    <br />
    {<br />
    <br />
    a=1; <br />
    score=score+1010100;<br />
    }<br />
    if(a==0)<br />
    {<br />
    if(y>2 || y<1)<br />
    printf("請重新輸入選擇&#92;n");<br />
    if(3>=x && x>=1 && y==1)<br />
    {<br />
    printf("您贏了&#92;n");<br />
    score=score+100;<br />
    } <br />
    if(3>=x && x>=1 && y==2)<br />
    {<br />
    printf("您輸了&#92;n");<br />
    score=score-100;<br />
    }<br />
    if(6>=x && x>=4 && y==2)<br />
    {<br />
    printf("您贏了&#92;n");<br />
    score=score+100;<br />
    }<br />
    if(6>=x && x>=4 && y==1)<br />
    {<br />
    printf("您輸了&#92;n");<br />
    score=score-100;<br />
    } <br />
    }<br />
    printf("您的得分為%d&#92;n",score);<br />
    a=0;<br />
    <br />
    } <br />
    system("PAUSE"); <br />
    return 0;<br />
    }
  • 請看我文章裡最後一篇程式碼<br />
    作弊碼是5

    和風信使 replied in 2009/01/04 13:40

You haven’t logged in yet, please use guest status to leave message. You can also log in with above service account and leave message

other options