格子源碼
㈠ 求大富翁源代碼
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#define _GOLD 2 //標志有金子的格子
#define _TRAP 3 //標志有陷阱的格子
#define _OBSTACLE 4 //標志有障礙物的格子
class simgame
{
public:
simgame(char *nm,int);
void terminate(){delete []name;};
void init(int data[],int n);
void run();
void display();
private:
char *name;
int way[50]; //標志環道格子種類的數組
int location;
int life;
int money;
int isdead; //判斷是否死亡
int isforward; //判斷是順行還是逆行
};
simgame::simgame(char *nm,int isfd=1)
{
strcpy(name,nm);
isforward=isfd;
location=0;
life=money=100;
isdead=0;
}
void simgame::init(int data[],int n)
{
int nn=0; //用於循環data數組以保證把way數組完整賦值
int i;
way[0]=0;
if(isforward)
{
for(int i=1;i<50;i++)
{
if(nn=n)nn=0; //如果data數組到達末尾,從頭開始
way[i]=data[nn];
nn++;
}
}
else
{
nn=n-1;
for(i=1;i<50;i++)
{
if(nn<0)nn=n-1;
way[i]=data[nn];
nn--;
}
}
}
void simgame::display()
{
cout<<"老鼠"<<name<<":";
if(life>0)
{
cout<<"位置="<<setw(5)<<location;
cout<<"生命="<<setw(5)<<life;
cout<<"金錢="<<setw(5)<<money;
}
else
cout<<"Dead!";
}
void simgame::run()
{
int i;
int isstop=0;
if(isdead)return;
if(isforward) //正常行走的過程
{
for(i=1;i<5;i++)
{
if(location+i==50)
location-=50; //如果到達末尾則從頭開始走,並把位置變數重新賦值
if(way[location+i]==_OBSTACLE) //如果途中有障礙物,則停止
{
location+=i;
isstop=1; //標志,表示是否停留
break;
}
}
if(!isstop)
location+=4;
switch(way[location])
{
case _GOLD:money+=50;break;
case _TRAP:life-=80;break;
default:break;
}
if(life<=0)isdead=1;
}
else //逆行的過程
{
for(i=1;i<4;i++)
{
if(location+i==50)
location-=50;
if(way[location+i]==_OBSTACLE)
{
location+=i;
isstop=1;
break;
}
}
if(!isstop)
location+=3;
switch(way[location])
{
case _GOLD:money+=50;break;
case _TRAP:life-=80;break;
default:break;
}
if(life<=0)isdead=1;
}
}
void main()
{
simgame mice1("A");
simgame mice2("B",0);
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1};
mice1.init(data,20);
mice2.init(data,20);
for(int i=0;i<5;i++)
{
mice1.run();
mice2.run();
cout<<"輪次:"<<i+1<<endl;
mice1.display();
mice2.display();
}
mice1.terminate();
mice2.terminate();
}
可以編譯,但不可以運行,求大蝦給診斷一哈,謝謝謝謝
問題補充:題目:一條由50個格子組成的環形跑道,其中一個格子是起點,兩只鼠都從起點按相反方向出發,一隻鼠按正方向前進且每次前進4格,另一隻鼠按反方向出發,且每次前進3個格子,每隻鼠出發時都有100點生命值和100個金子;跑道由普通格子,帶金幣的格子,帶陷阱的格子,帶障礙的格子等四種組成!
規則:a,起點是普通格子,任何普通格子鼠可以順利通過.
b.鼠每路過或停在一個帶金幣的格子上就增加50個金幣
c.鼠停留在陷阱的格子上,損失生命80點.
d.鼠路過帶障礙的格子時,本輪停止前進.
1.並實現相關的類,同時模擬此游戲
輸入:已在main()中提供一個大小為20的一維整型數組data,數值可為1,2,3,4,分別表示四種類型的格子,其中data(0)表示起點.
輸出:10輪次內,每輪走完後兩只老鼠的各自位置,生命,和擁有的金幣數.
要main()函數應為如下格式
void main()
{
int data[20]={1,2,2,2,3,2,3,4,1,2,3,4,1,2,3,4,3,2,2,1};
simgame game;
game.init(data,20);
game.run(5)
game.terminate();
}
輸出:
輪次1:
老鼠A:位置=##生命=##金錢=##
老鼠B:位置=##生命=##金錢=##
輪次2:
.......
宏:
#define _GOLD 2 //金子
#define _TRAP 3 //陷阱
#define _OBSTACLE 4 //障礙物
㈡ 用c語言寫一個簡易數獨的思路。要代碼
#include<stdio.h>
intnum[9][9],xy[9][9];
intcheck(intx,inty){
inti,m,n;
for(i=0;i<9;i++)
if((xy[x][y]==xy[i][y]&&i!=x)||(xy[x][y]==xy[x][i]&&i!=y))
return0;
for(i=0,m=x/3*3,n=y/3*3;i<9;i++)
if(xy[x][y]==xy[m+i/3][n+i%3]&&m+i/3!=x&&n+i%3!=y)
return0;
return1;
}
voidsearch(intx,inty){
if(x==9)
for(x=0;x<9;x++){
for(y=0;y<9;y++)
printf("%d",xy[x][y]);
printf(" ");
}
elseif(num[x][y])
search(x+(y+1)/9,(y+1)%9);
else
for(xy[x][y]=1;xy[x][y]<=9;xy[x][y]++)
if(check(x,y))
search(x+(y+1)/9,(y+1)%9);
return;
}
intmain(){
inti,j;
for(i=0;i<9;i++)
for(j=0;j<9;j++){
scanf("%d",&num[i][j]);
xy[i][j]=num[i][j];
}
search(0,0);
return0;
}
輸入為9行9列整數,已知的整數填寫對應的數字,尚待計算的未知數字填寫0。
該代碼的思路很簡單,就是從第一行第一列開始依次填入數字,檢查是否是在同一行、同一列、同一宮有沒有填入重復數字,如果沒有就繼續填入下一個數字,如果有就返回。
雖然效率稍低,但原理簡單、表述直白、易於理解,更有效率的代碼是使用十字鏈表完成,如有興趣可繼續深入
㈢ 找一套免費的百萬格子源代碼
你好
我給你找了幾個百萬格子源碼演示及下載地址
演示:http://www.buyok.cn/gezi/
下載頁面:http://down.chinaz.com/s/17792.asp
演示:http://gezi.hikers.cn/
下載頁面:http://down.chinaz.com/s/17269.asp
更多的請去站長站下載,地址:down.chinaz.com
謝謝!
進到我給的這個網頁裡面下載。