上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2007-9-28, PM 9:17 星期五 文章主題: 某遊戲公司程式設計考題 |
|
|
一、請用int rand()函式製作一個所存數值從0~100,大小為15的陣列,並由小到大排列。
二、請完成以下函式:
void DecStoLife( stObject *stoDamage, stObject *stoAttack )
此函式的功能是計算攻擊方(stoAttack)對防守方(stdDamage)造成傷害後
防守方剩下多少血量
首先將攻擊方的攻擊力乘上攻擊方的攻擊倍率
再除以防守方的防禦倍率
就是攻擊方會對防守方造成的傷害值
代碼: | struct stObject
{
int PosX; // 所在位置X
int PosY; // 所在位置Y
float hp; // 血量
int AttackRate; // 攻擊倍率
int DefenceRate; // 防禦倍率
int AttackPt; // 攻擊力
}; |
yag 在 2007-11-25, PM 1:47 星期日 作了第 1 次修改 |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-28, PM 9:33 星期五 文章主題: Re: 某遊戲公司程式設計考題 |
|
|
第1題的意思是要用15格的陣列來存入0~100的數值?
是隨機選數值~然後依大小來排列這樣嗎?
第2題似乎要用到物件導向... |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2007-9-28, PM 10:16 星期五 文章主題: Re: 某遊戲公司程式設計考題 |
|
|
fire231 寫到: | 第1題的意思是要用15格的陣列來存入0~100的數值?
是隨機選數值~然後依大小來排列這樣嗎?
第2題似乎要用到物件導向... |
嗯,第1題就像你說的那樣
第2題不算是物件導向,只是有個struct在而已,c語言也有struct |
|
回頂端 |
|
|
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-9-28, PM 10:31 星期五 文章主題: |
|
|
第一題
代碼: | #include <stdio.h>
#include <time.h>
int main(){
int a[15];
int i, j, temp;
srand(time(NULL));
for(i = 0; i < 15; i++)
a[i] = rand() % 101;
for(i = 0; i < 14; i++)
for(j = i + 1; j < 15; j++)
if(a[i] > a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for(i = 0; i < 15; i++)
printf("%d\n", a[i]);
system("PAUSE");
return 0;
} |
neilshih 在 2007-9-28, PM 11:56 星期五 作了第 1 次修改 |
|
回頂端 |
|
|
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-9-28, PM 10:55 星期五 文章主題: |
|
|
第二題
代碼: | void DecStoLife( stObject *stoDamage, stObject *stoAttack ){
stoDamage->hp = stoDamage->hp - stoAttack->AttackPt * stoAttack->AttackRate / stoDamage->DefenceRate ;
} |
neilshih 在 2007-9-30, PM 2:13 星期日 作了第 2 次修改 |
|
回頂端 |
|
|
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-9-28, PM 11:56 星期五 文章主題: |
|
|
使用第二題函式
代碼: | #include <stdio.h>
#include <time.h>
#include <stdlib.h>
struct stObject{
int PosX; // 所在位置X
int PosY; // 所在位置Y
float hp; // 血量
int AttackRate; // 攻擊倍率
int DefenceRate; // 防禦倍率
int AttackPt; // 攻擊力
stObject();
};
stObject::stObject(){ //建構子
hp = 100;
AttackRate = 2;
DefenceRate = 4;
AttackPt = 10;
}
void DecStoLife( stObject *stoDamage, stObject *stoAttack ) ;
int main(){
stObject atk, def;
printf("ready to battle\n");
printf("status def.hp = %f\n", def.hp);
DecStoLife(&def, &atk);
printf("after battle\n");
printf("status def.hp = %f\n", def.hp);
printf("\n");
system("PAUSE");
}
void DecStoLife( stObject *stoDamage, stObject *stoAttack ){
stoDamage->hp = stoDamage->hp - ((stoAttack->AttackPt) * (stoAttack->AttackRate) / (stoDamage->DefenceRate) );
} |
|
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-29, PM 6:32 星期六 文章主題: |
|
|
第1題
代碼: |
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
int number[15],save,x;//16格的陣列,暫存數目用,比對用
int main()
{
srand(time(NULL));//使每次的數字都不一樣
for(x=0;x<15;x++)
{
save=rand()%101;//0~100
number[x]=save;//存入數列
}
re:
for(x=0;x<15;x++)
{
if(number[x]>number[x+1])//若前一個比後一個大就互換
{
save=number[x];
number[x]=number[x+1];
number[x+1]=save;
goto re;//回去再執行
}
}
for(x=0;x<15;x++)
{
cout << number[x] << endl;//列出
}
system("pause");
}
|
上面的~你第1題無法編譯喔
還是你是用VC++? |
|
回頂端 |
|
|
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-9-29, PM 6:47 星期六 文章主題: |
|
|
可以編壓
我用dev-c++ |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-29, PM 6:51 星期六 文章主題: |
|
|
我也是用dev-C++阿= =
可是我複製你的無法編譯
你的沒有+上#include <iostream> |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-29, PM 6:52 星期六 文章主題: |
|
|
第2題
代碼: |
#include <stdio.h>
#include <iostream>
using namespace std;
struct stObject{
int PosX; // 所在位置X
int PosY; // 所在位置Y
float hp; // 血量
int AttackRate; // 攻擊倍率
int DefenceRate; // 防禦倍率
int AttackPt; // 攻擊力
};
void DecStoLife( stObject *stoDamage, stObject *stoAttack ) ;
int main(){
stObject stoDamage,stoAttack;
stoDamage.PosX=1;
stoDamage.PosY=1;
stoDamage.hp=10;
stoDamage.DefenceRate=2;
stoAttack.PosX=1;
stoAttack.PosY=1;
stoAttack.AttackRate=4;
stoAttack.AttackPt=2;
if(stoDamage.PosX==stoAttack.PosX&&stoDamage.PosY==stoAttack.PosY)
{
cout << "防禦方原有" << stoDamage.hp << "的血量" << endl;
DecStoLife(&stoDamage,&stoAttack);
cout << "目前剩下" << stoDamage.hp << "的血量" << endl;
system("pause");
}
}
void DecStoLife( stObject *stoDamage, stObject *stoAttack )
{
stoDamage->hp=stoDamage->hp-stoAttack->AttackPt*stoAttack->AttackRate/stoDamage->DefenceRate;
}
|
阿~我也會用struct了
真感動~ |
|
回頂端 |
|
|
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-9-29, PM 11:35 星期六 文章主題: |
|
|
我是用標準C
沒++ |
|
回頂端 |
|
|
satanupup 喜歡上這裡的冒險者
註冊時間: 2007-05-29 文章: 80
68.10 果凍幣
|
發表於: 2007-10-1, PM 6:00 星期一 文章主題: |
|
|
C++
include <iostream>
using namespace std;
C
include <iostream.h>
舊式的表頭將所有的內容讀入全域名字空間,所以不需要名字空間的敘述
目前c++使用臨時表頭以及不會使用using敘述。你的C++編譯器可以正確編譯這些程式。然而。對新程式而言,你應該使用新式的表頭,..
新式表頭不需為檔名
iostream
fstream
vector
string |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-10-1, PM 8:55 星期一 文章主題: |
|
|
我怎麼覺得除了初級以外的地方(中跟高級)
帖子都很少阿= =
尤其是中級的... |
|
回頂端 |
|
|
GGCqwop 偶而上來逛逛的過客
註冊時間: 2008-01-09 文章: 9
0.00 果凍幣
|
發表於: 2008-1-10, AM 10:45 星期四 文章主題: 學習中..^^"" |
|
|
代碼: | #include <stdio.h>
#include <time.h>
#include <iostream.h>
int main(){
int a[15];
int i, j, temp;
srand(time(NULL)); //這一行是什麼?? 我去到這一行是不是固定的選取??
for(i = 0; i < 15; i++)
a[i] = rand() % 101;
for(i = 0; i < 14; i++)
for(j = i + 1; j < 15; j++)
if(a[i] > a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for(i = 0; i < 15; i++)
printf("%d\n", a[i]);
system("PAUSE");
return 0;
} |
yag註:請善用code標籤。 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
|
回頂端 |
|
|
|