電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
某遊戲公司程式設計考題
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
yag
Site Admin


註冊時間: 2007-05-02
文章: 684

2639.56 果凍幣

發表發表於: 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
文章: 684

2639.56 果凍幣

發表發表於: 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 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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) );
}
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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++
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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
沒++
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
satanupup
喜歡上這裡的冒險者


註冊時間: 2007-05-29
文章: 80

67.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標籤。
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
yag
Site Admin


註冊時間: 2007-05-02
文章: 684

2639.56 果凍幣

發表發表於: 2008-1-10, PM 9:47 星期四    文章主題: Re: 學習中..^^"" 引言回覆

GGCqwop 寫到:
srand(time(NULL)); //這一行是什麼?? 我去到這一行是不是固定的選取??

請參考http://www.gamelife.idv.tw/viewtopic.php?t=75
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作