C語言 憤怒的小鳥

2022-02-04 02:15:08 字數 3671 閱讀 6968

//

//#include

"stdafx.h

"#include

#include

#include

#include

#include

/********函式變數宣告*******

*/#define pr_box printf("■")

#define pr_gold printf("★")

#define pr_ag printf("☆")

#define pr_fbird printf("ю")

#define pr_dbird printf("ф")

#define pr_land printf("┳┳┯")

#define pr_bg_tl printf("╔")

#define pr_bg_tr printf("╗")

#define pr_bg_dl printf("╚")

#define pr_bg_dr printf("╝")

#define pr_bg_x printf("═")

#define pr_bg_y printf("║")

#define pr_blank printf(" ");

int grade = 1, c_gold = 0, c_ag = 0, score = 0, delay_time = 1000, max_blank = 9, distance = 18;//

grade 遊戲等級

//score 分數

//max_blank 上下兩個煙囪之間的最大距離

//distance 左右兩個煙囪之間的距離

struct birds//

小鳥的結構體

;birds *bird = (birds*)malloc(sizeof(birds));//

給小鳥指標分配空間

struct bg//

煙囪的結構體--迴圈雙向鍊錶

;bg *bg1 = new bg[sizeof(bg)];//

將乙個煙囪結點設定成全域性變數

void position(int x, int y)//

將游標移動到x,y座標處

; handle out =getstdhandle(std_output_handle);

setconsolecursorposition(out, pos);

}void creatbird()//

建立小鳥

void creatbg()//

建立資料結構為迴圈雙向鍊錶的煙囪

void insertbg(bg *p)//

建立乙個結點插入到傳入結點之前。迴圈雙向鍊錶的插入

else

//反之亦然

bgs->pri = p->pri;//

迴圈鍊錶指向

bgs->next =p;

p->pri->next =bgs;

p->pri =bgs;

}void check_bg(bg *q)//

檢查是否有煙囪超出螢幕,若有超出,則移動到螢幕右側。

else

//反之亦然}}

}void loop_bg(bg *q)//

煙囪單向迴圈移動

}}void prt_bg(bg *q)//

畫煙囪----較冗餘的**

position(p->x, p->y);//

畫出上煙囪下半部分

pr_box; pr_box; pr_box; pr_blank;//

輸出三個格仔,輸出空格,清除原來餘影

position(p->x, p->y + p->l_blank);//

畫出下煙囪上半部分

pr_box; pr_box; pr_box; pr_blank;//

輸出三個格仔,輸出空格,清除原來餘影

k = k + p->l_blank + 1

;

for (k; k <= 22; k++)//

畫出下煙囪下半部分

position(p->x, 23);//

輸出地下的線

for (k = 1; k3 - 2; k++)

pr_land;

}p = p->next;

if (p->x == 0

)

position(p->x + 1, p->y);

pr_blank; pr_blank; pr_blank;

position(p->x + 1, p->y + max_blank -grade);

pr_blank; pr_blank; pr_blank;

j = j + max_blank - grade + 1

;

for (j; j <= 22; j++)}}

}void prtbg()//

畫上下兩條線

/*for(i=2;i<=23;i++)

*/}void prtbird()//

畫鳥int checkyn(bg *q)//

檢查是否撞壁

return1;

}void

prtfirst()

void

main()

while (i++<500

);

i = 0

; }

position(

38, 10

); printf(

"you lost!");

position(

1, 25

); system(

"pause");

}//1 2 3 4 5 6 7 8 10 15 20 25 30 35 38

//══════════════════════════════════════

//1 ■■ ■■

//2 ■■ ■■

//3 ■■ ■■

//4 ■■ ■■

//5 ■■ ■■

//6 ■■ ■■

//7 ■■■ ■■

//8 ■■

//9 ■■

//10 ю ■■■

//11

//12 ■■■

//13 ■■

//14 ■■

//15 ■■ ■■■

//16 ■■ ■■

//17 ■■ ф ■■

//18 ■■ ■■

//19 ■■ ■■

//20 ■■ ■■

//21 ■■ ■■

//22┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳┳┯┳

//══════════════════════════════════════

憤怒的小鳥

對於每兩隻豬,只要他們的橫座標不一樣,就會有一條經過原點的二次函式y ax2 bx同時經過這兩隻豬,那麼這時就是解二元一次方程的時候了,設第一只豬的座標為 x1,y1 第二隻豬的座標為 x2,y2 y1 ax1 2 bx 1 y2 ax2 2 bx 2 化為 b y 1 ax 12x1 y2 ax2...

憤怒的小鳥

qaq 狀壓dp 1表示小鳥打掉了,0表示沒打掉。dp s 表示到s狀態最少需要幾步。怎麼列舉a,b。因為c 0,只需兩隻豬即可確定一條曲線。boom i j 表示i豬和j豬確定的曲線可以打掉的豬。關於轉移 列舉狀態s中第一只沒有打掉的小豬,固定i,列舉j即可 注意初始化 include inclu...

憤怒的小鳥

憤怒的小鳥 這道題目不是一道sb的狀壓嗎。我們設f i f i f i 表示射擊狀態是i ii,最少用了多少直線。i ii的第j jj位為1 11表示射擊這個位置。然後對於每個直線跑揹包。時間複雜度 o t n22n o tn 22 n o tn22 n 但是其實有更快做法,限制i ii只能被包含最...