目錄

一、介紹
1、題目要求
2、資源
二、關(guān)鍵功能的實(shí)現(xiàn)
1、設(shè)計(jì)的結(jié)構(gòu)體和鏈表:
2、彈弓拉繩的實(shí)現(xiàn):
3、當(dāng)繩子拉伸達(dá)到上限時(shí),仍然使小鳥可以改變方向:
3、計(jì)算小鳥飛出后的任意時(shí)刻的位置:
這個(gè)寒假翻電腦的時(shí)候找到了上學(xué)期C語(yǔ)言課設(shè)的介紹視頻。這是我自己做的目前來(lái)說(shuō)最長(zhǎng)的代碼,實(shí)現(xiàn)的功能也是最復(fù)雜的,對(duì)我來(lái)說(shuō)還是很有紀(jì)念意義的。我之后也把視頻傳到B站上了:《憤怒的小鳥》——C語(yǔ)言課設(shè)。感興趣的同學(xué)可以去看看。
在這里我簡(jiǎn)單分享一下我的設(shè)計(jì),也許可以幫到有需要的人。
1、題目要求老師當(dāng)時(shí)對(duì)于我們的要求是使用easyX實(shí)現(xiàn)圖形界面,利用貼圖和重畫實(shí)現(xiàn)動(dòng)畫,必須使用鏈表。除此之外,只能使用C語(yǔ)言語(yǔ)法。
2、資源所有的資源都在這里了,里面包含一個(gè)可執(zhí)行文件和一個(gè)文件夾,文件夾里有全部的圖片、音樂(lè)、源代碼還有工程文件。
鏈接:https://pan.baidu.com/s/1vjQ48dcR7DNjKtKG6OQgHg?pwd=qc1v
提取碼:qc1v
除此之外,在大一上學(xué)期的寒假,我是通過(guò) @童晶 老師的課程視頻學(xué)習(xí)使用easyX的,感覺(jué)很不錯(cuò),有需要的同學(xué)可以了解一下。
二、某些功能的實(shí)現(xiàn) 1、設(shè)計(jì)的結(jié)構(gòu)體和鏈表:typedef struct users{
char id[100];
char password[100];
int score[5]={0};
int good[5] = { 0 }; //用來(lái)存購(gòu)買的道具,0放鳥制傳送門
int money=0;
}users;
typedef struct bird_info { //用結(jié)構(gòu)體存儲(chǔ)畫面上某一點(diǎn)的圖像,role為1(小紅鳥),2(笑鳥)
int x;
int y;
int role;
int fire; //是否發(fā)射
struct bird_info* next;
}b_info;
typedef struct pig_info { //用結(jié)構(gòu)體存儲(chǔ)畫面上某一點(diǎn)的圖像,role為1(小豬),2(笑豬)
int x;
int y;
int role;
int count;
struct pig_info* next;
}p_info;
typedef struct stick_info { //用結(jié)構(gòu)體存儲(chǔ)畫面上某一點(diǎn)的圖像,role為1(木棍障礙)
int x;
int y;
int role;
struct stick_info* next;
}s_info;
b_info* bH; //將b_info變量串成鏈表,將頭指針定義為全局變量,各函數(shù)均可訪問(wèn)
p_info* pH; //將p_info變量串成鏈表,將頭指針定義為全局變量,各函數(shù)均可訪問(wèn)
s_info* sH; //將s_info變量串成鏈表,將頭指針定義為全局變量,各函數(shù)均可訪問(wèn)
users user;2、彈弓拉繩的實(shí)現(xiàn):
實(shí)際上是利用了easyX的畫線函數(shù),不過(guò)我把線的寬度調(diào)大了,也改了線的顏色。然后將線的一端設(shè)置為小鳥的坐標(biāo),一端為彈弓的坐標(biāo)。
3、當(dāng)繩子拉伸達(dá)到上限時(shí),仍然使小鳥可以改變方向:void bposition1(short x1,short y1) { //當(dāng)繩子過(guò)長(zhǎng)時(shí)計(jì)算小鳥的位置 (傳入鼠標(biāo)位置)
double sinx; //儲(chǔ)存正弦值
double cosx; //儲(chǔ)存余弦值
double heartx = 267; //圓心x坐標(biāo)
double hearty = 515; //圓心y坐標(biāo)
double l= distance(x1, y1, heartx, hearty);
sinx = (hearty - y1) / l;
cosx = (heartx - x1) / l;
bH->x = heartx - cosx * 35-25;
bH->y = hearty - sinx * 35-25;
}3、計(jì)算小鳥飛出后的任意時(shí)刻的位置:void bposition(int a,int b) { //計(jì)算小鳥發(fā)出后的位置
static int speed = 0;
double vm=14; //繩的大合速度
double sin;
double cos;
float heartx = 267; //彈弓x坐標(biāo)
float hearty = 515; //彈弓y坐標(biāo)
double l=distance(a,b, heartx, hearty); //計(jì)算繩長(zhǎng)
sin = (hearty - b) / l;
cos = (heartx - a) / l;
vx = vm * cos*l/35;
vy = vm * sin*l/35+10*times; //屏幕上 以向下為y坐標(biāo)增加,取+號(hào)
if (speed == 10) {
times=times+0.2;
speed = 0;
}
else {
speed++;
}
}這里的很多參數(shù)都是我自己反復(fù)嘗試才確定的,雖然我也覺(jué)得這樣直接用數(shù)字其實(shí)不利于程序的維護(hù),但是就完成課設(shè)來(lái)說(shuō)還是比較方便的。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:《憤怒的小鳥》——大一下C語(yǔ)言程序課設(shè)-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.chinadenli.net/article42/djdshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站策劃、品牌網(wǎng)站制作、服務(wù)器托管、定制網(wǎng)站、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容