查看單個文章
舊 2009-09-01, 05:27 PM   #2 (permalink)
~愛搞笑的好人~
註冊會員
 
~愛搞笑的好人~ 的頭像
榮譽勳章

勳章總數0
UID - 329890
在線等級: 級別:0 | 在線時長:3小時 | 升級還需:2小時
註冊日期: 2009-08-28
文章: 6
精華: 0
現金: 11 金幣
資產: 11 金幣
Lightbulb 我是用Virtual C 寫的...

我是用Virtual C 寫的...
換平台有些寫法可能要自己改一下哦!
看不懂再問吧!! 有點複雜的說加上貼上來後格式會全跑掉... ><"
我在想想看可不可以弄成Class或方法嗎....
有想到再給你看看摟!
其他人有寫出來可以借我看看嗎? 我想多學幾種方法... 感謝喔!!
可執行檔放在 http://www.filedropper.com/test2_1
你可以先試試看再去看程式碼!!! 比較好懂!
我是先用固定的開獎號碼做喔!! 要改自動產生開獎號碼把註解地方(/* */)拿掉就可以了!

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int i, j, k, tickets, pay=0, total, totalpay, select[6]={3,7,12,28,38,41}, **Computerselect=new int *[tickets], stars, Maxstars; //tickets是購票數量,pay每次購買票數金額,totalpay總共要付多少錢,total中獎金額,select開獎號碼,Computerselect玩家購買票號(用二維動態陣列存),stars每組中幾個號碼,Maxstars最多中幾個號碼
char name[128], choice; //name玩家名字,choice選擇用(有重覆使用!)
do{
Maxstars=0; //因為可能有多位玩家! 所以每次開始時要清空前筆資料!
stars=0;
totalpay=0;
total=0;
printf("=================================================\n");
printf("Welcome to the Happy Lottery Game!\nYour name:");
scanf("%s",name);
printf("%s, welcome to the game!\n",name);
srand((unsigned)time(NULL)); //產生亂數用! 網路上都查的到!
/*
for(i=0; i<6; i++) //自動選則開獎號碼(隨機產生的開獎號碼)
{
d: select[i]=rand()%37;
for(j=0; j<i; j++) //檢查選號是否重覆
{
if(select[i]==select[j] || select[i]==0) //檢查選號是否重覆或產生0的亂數
goto d;
}

}
*/
do{ //進入遊戲
printf("=================================================\nEnter the number of tickets you want to buy:");
scanf("%d",&tickets);
for(i=0; i<tickets; i++)
{
Computerselect[i] = new int[6];
}
c: printf("Computer or Self select (C/S)?");
scanf(" %c",&choice); //%c前一定要空一格才會等待輸入!! 為什麼~因為經驗!!! 不空格會直接往下直行喔!!!
switch(choice)
{
case 'C':
case 'c':
stars=0;
for(i=0; i<tickets; i++) //機器自動選號
{
printf("Select numbers:");
for(j=0; j<6; j++) //機器自動選號
{
a: Computerselect[i][j]=rand()%37;
for(k=0; k<j; k++) //檢查選號是否重覆
{
if(Computerselect[i][j]==Computerselect[i][k] || Computerselect[i][j]==0) //檢查選號是否重覆或產生0的亂數
goto a; //a為標籤! 會跳到 a: 的地方開始執行
}
printf(" %d",Computerselect[i][j]);
}
printf("\n");
}
for(i=0; i<tickets; i++) //判斷中幾顆星
{
for(j=0; j<6; j++)
{
for(k=0; k<6; k++)
{
if(Computerselect[i][j]==select[k]) //判斷數字是否重複(中獎)
{
stars++;
}
}
}
}
if(Maxstars<stars) //將最多的中獎數量存起來
Maxstars=stars;
printf("-------------------------------------------------\n");
break;
case 'S':
case 's':
stars=0;
for(i=0; i<tickets; i++) //自行選號
{
printf("Select numbers:");
b: scanf("%d %d %d %d %d %d",&Computerselect[i][0], &Computerselect[i][1], &Computerselect[i][2], &Computerselect[i][3], &Computerselect[i][4], &Computerselect[i][5]);
for(j=0; j<6; j++)
{
if(Computerselect[i][j]<1 || Computerselect[i][j]>42) //判斷數字是否超出範圍
{
printf("數字超出範圍! 請重新輸入!\n");
goto b;
}
for(k=0; k<j; k++) //檢查選號是否重覆
{
if(Computerselect[i][j]==Computerselect[i][k]) //判斷數字是否重覆
{
printf("數字重覆! 請重新輸入!\n");
goto b;
}
}
}
}
for(i=0; i<tickets; i++) //判斷中幾顆星
{
for(j=0; j<6; j++)
{
for(k=0; k<6; k++)
{
if(Computerselect[i][j]==select[k]) //判斷數字是否重複(中獎)
{
stars++;

}
}
}
}
if(Maxstars<stars) //將最多的中獎數量存起來
Maxstars=stars;
printf("-------------------------------------------------\n");
break;
default:
printf("代碼錯誤!! 請重新輸入!\n");
goto c;
} //結束switch
pay=tickets*50;
totalpay+=pay;
printf("%s's Receipt:\nTotal pay: %d\nThanks for your playing Happy Lottery!\n",name, pay);
printf("=================================================\nPlay more (Y/N)?");
scanf(" %c",&choice);
}while(choice=='Y' || choice=='y');
printf("The lottery result is:\n");
for(i=0; i<6; i++) //印出開獎號碼
{
printf(" %d",select[i]);
}
printf("\n");
if(Maxstars>2) //判斷中獎金額
total=200;
else if(Maxstars>2)
total=200;
else if(Maxstars>3)
total=1000;
else if(Maxstars>4)
total=10000;
else if(Maxstars>5)
total=500,000;
printf("%s! Congratulations! You won %d stars.\nYou spent NT $%d and won NT $%d.\n=================================================\nQuit the game (Y/N)?",name, Maxstars, totalpay, total);
scanf(" %c",&choice);
}while(choice=='N' || choice=='n');
printf("Thanks for playing!\n");
system("pause");
return 0;
}

此帖於 2009-09-01 05:45 PM 被 ~愛搞笑的好人~ 編輯. 原因: 增加內容
~愛搞笑的好人~ 目前離線  
送花文章: 0, 收花文章: 2 篇, 收花: 3 次
回覆時引用此帖