收藏 分享(赏)

吃豆人C语言源代码.docx

上传人:liyang3100 文档编号:1481111 上传时间:2018-07-21 格式:DOCX 页数:23 大小:34.95KB
下载 相关 举报
吃豆人C语言源代码.docx_第1页
第1页 / 共23页
吃豆人C语言源代码.docx_第2页
第2页 / 共23页
吃豆人C语言源代码.docx_第3页
第3页 / 共23页
吃豆人C语言源代码.docx_第4页
第4页 / 共23页
吃豆人C语言源代码.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、北京科技大学 计算机与通信工程学院 信息 1008 庄辉1 / 23#include “graphics.h“#include “stdlib.h“ #include “dos.h“ #include “bios.h“#include “stdio.h“#include “time.h“#include “graphics.h“#include “conio.h“#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define ENTER 0x1c0

2、d#define SPACE 0x3920 /*游戏中人物的结构体*/ struct play int x;int y; ; struct Snowint x;int y;北京科技大学 计算机与通信工程学院 信息 1008 庄辉2 / 23int speed;snow100;int snownum=0;struct play you,them5; void *save;int sum=0;/*统计吃的豆子个数,吃满 50 颗就算胜利*/int change=10;/*0 豆子 ,1 空地 2,墙壁,3 自己,4 敌人*/int a1520=2,2,2,2,2,2,2,2,2,2,2,2,2,2

3、,2,2,2,2,2,2,2,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,2,2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2,2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2,2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2,2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2,2,1,0,1

4、,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2,2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2,2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,2,1,2,2,1,2,2,1,1,1,1,0,1,4,1,2,0,0,1,2,2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;/*数组就是地图( level 1)*/ ;int b

5、1520=2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,2,2,1,2,2,2,2,1,2,1,1,0,0,0,1,1,4,1,1,0,2,2,1,1,0,2,2,1,2,0,1,2,2,2,2,2,2,0,0,0,2,2,4,1,0,2,1,1,2,1,1,1,0,1,1,2,1,0,1,1,2,2,1,2,1,2,1,1,2,2,3,2,2,1,1,2,1,2,2,1,2,2,1,2,1,2,2,1,1,1,1,1,1,1,0,0,0,1,1,1,2,2,2,2,1,0,2,1,1

6、,1,2,1,0,1,2,2,2,1,1,1,2,2,2,0,1,0,2,2,1,1,2,1,0,1,2,2,1,4,1,1,2,北京科技大学 计算机与通信工程学院 信息 1008 庄辉3 / 232,1,0,2,0,1,2,1,2,2,1,0,1,2,1,1,1,1,1,2,2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2,2,1,1,2,1,1,2,1,1,2,1,0,2,1,2,2,2,1,1,2,2,1,2,2,1,2,2,2,1,1,1,0,1,4,1,2,0,0,1,2,2,1,0,0,0,0,0,4,0,1,1,0,1,1,1,1,0,0,1,2,2

7、,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;/*数组就是地图( level 2)*/int c1520=2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,0,0,0,0,0,1,0,0,0,1,1,2,1,1,1,0,2,2,1,2,2,2,1,1,2,2,1,0,0,0,1,2,4,1,1,0,2,2,1,1,0,2,2,1,2,0,1,2,2,2,2,2,2,0,0,0,2,2,4,1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2,2,1,2,1,2,1,2,2,1,3,2,2,1,1,1,1

8、,2,2,1,2,2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2,2,1,2,1,0,2,1,1,1,2,2,0,1,2,2,2,1,1,1,2,2,2,0,1,0,1,2,1,2,2,1,0,1,2,1,1,4,1,1,2,2,2,0,2,0,1,2,1,1,2,1,0,1,2,2,1,1,1,1,2,2,2,0,2,1,1,2,2,1,2,1,0,2,2,1,0,0,0,1,2,2,1,1,2,1,1,2,1,1,2,2,0,2,1,1,2,2,2,1,2,2,1,2,2,1,2,2,1,2,1,1,0,1,4,1,2,0,0,1,2,2,1,0,0,0,0

9、,0,4,0,1,1,0,1,1,1,1,0,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;/*数组就是地图( level 3)*/int xx52;/*判断敌人方向用的结构体 */int false=0; /*判断输赢的参数*/*选择关卡*/void levelchoose(int x)int j,k;switch(x)北京科技大学 计算机与通信工程学院 信息 1008 庄辉4 / 23case 1:break;case 2:for(j=0;j16; r.x.dx=microsec; int86(0x15, /*吃豆子的函数*/北京科技大学 计算

10、机与通信工程学院 信息 1008 庄辉8 / 23drawblackdou(int x,int y) setcolor(0); circle(100+y*20,100+x*20,3); /*吃到豆子后就加一*/sum+;/*吃到后这里就成为普通平地*/axy=1;/*播放音乐的函数*/void Pr()int s15=0,100,150,200,50,150,250,300,250,300,250,150,100,250,350;/*改变欢迎词的颜色*/setcolor(change/10);/*改变欢迎词的字体*/settextstyle(0,0,4);/*输出欢迎词*/outtextxy(

11、20,200,“WELCOME TO OUR GAME!“);outtextxy(20,250,“Press Space key to“);outtextxy(20,300,“continue.“);北京科技大学 计算机与通信工程学院 信息 1008 庄辉9 / 23/*使扬声器以 schange/10的频率发声*/sound(schange/10);/*播放动画音乐*/void DrawSnow()int i;int sx62;setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*一次 3 行画出白色雪花的 3 条线*/line(1,1,9,9);line(0,5

12、,10,5);line(9,1,1,9);/*在堆中申请 200 字节空间*/save=malloc(200);/*将雪花位图保存到 save 中*/getimage(0,0,10,10,save);/*清屏*/cleardevice();北京科技大学 计算机与通信工程学院 信息 1008 庄辉10 / 23/*设置随机数的种子数*/randomize();/*计算雪花位置的横坐标数组*/for(i=0;i500) snowi.y=10-random(200);change+;if(change=140)change=10;nosound();cleardevice();北京科技大学 计算机与

13、通信工程学院 信息 1008 庄辉12 / 23/*图形系统初始化函数*/void Init(void)int gd=DETECT,gm;initgraph(cleardevice();/*开始函数*/begain() int i,j; sleep(1); for(i=0;i15;i+)for(j=0;j20;j+) /*代表墙壁*/ if(aij=2) setfillstyle(SOLID_FILL,BLUE);bar(100+j*20-10,100+i*20+10,100+j*20+10,100+i*20-10); 北京科技大学 计算机与通信工程学院 信息 1008 庄辉13 / 23/*

14、代表自己*/else if(aij=3) setcolor(RED);circle(100+j*20,100+i*20,9); /*代表敌人*/ else if(aij=4) setcolor(GREEN); circle(100+j*20,100+i*20,9); /*代表豆子*/ else if(aij=0) setcolor(YELLOW);circle(100+j*20,100+i*20,3); /*敌人也自己的开始坐标*/ you.x=5;you.y=9;them0.x=2;them0.y=15; them1.x=4;them1.y=1; them2.x=8;them2.y=16;

15、them3.x=12;them3.y=13; them4.x=13;them4.y=7; 北京科技大学 计算机与通信工程学院 信息 1008 庄辉14 / 23/*敌人移动的过程*/void movethem(struct play *them) int i,loop;randomize();for(i=0;i5;i+) if(you.x=themi.x else if(you.x=themi.x else if(you.y=themi.y else if(you.y=themi.yelse loop: /*这里的方向采取随机赋值,原则是新的方向不可以和原来的方向相反*/ xxi0=rand(

16、)%4+1;北京科技大学 计算机与通信工程学院 信息 1008 庄辉15 / 23if(xxi0=1if(xxi0=3 xxi1=xxi0;if(xxi0=1)/*四个方向 */ themi.x-;if(athemi.xthemi.y=2)/*如果碰墙壁的话就回到原来的地方等待随机的方向*/ themi.x+;goto loop; else if(xxi0=2) themi.x+;if(athemi.xthemi.y=2) themi.x-;goto loop; else if(xxi0=3) themi.y+; if(athemi.xthemi.y=2) themi.y-;goto loop

17、; 北京科技大学 计算机与通信工程学院 信息 1008 庄辉16 / 23 else if(xxi0=4) themi.y-; if(athemi.xthemi.y=2) themi.y+;goto loop; /*敌人移动中的判断*/fun(struct play *them) int i; /*把敌人原来的位置删除*/setcolor(0);北京科技大学 计算机与通信工程学院 信息 1008 庄辉17 / 23for(i=0;i5;i+)circle(themi.y*20+100,themi.x*20+100,9);/*根据控制者的位置来决定敌人的移动方向*/ movethem(them)

18、;/*胜利的话*/win() cleardevice(); settextstyle(0,0,4);while(!kbhit() setcolor(rand()%13+1);outtextxy(200,200,“YOU WIN!“); delay(1000); 北京科技大学 计算机与通信工程学院 信息 1008 庄辉18 / 23/*失败的话*/false1() cleardevice();settextstyle(0,0,4); while(!kbhit() setcolor(rand()%13+1);outtextxy(180,200,“GAME OVER!“); delay(1000);

19、 loseyes()/*判断是否失败*/ int i; for(i=0;i5;i+) if(themi.x=you.x 北京科技大学 计算机与通信工程学院 信息 1008 庄辉19 / 23/*主控函数*/main() int gd=DETECT,gm;int key,i,loop,jump;int choice;initgraph(cleardevice();DrawSnow();hello();getchar();instruction();scanf(“%d“,levelchoose(choice);getchar();loop:北京科技大学 计算机与通信工程学院 信息 1008 庄辉2

20、0 / 23Init();/*开始画面*/begain();while(!kbhit() /*重画敌人*/for(i=0;i5;i+) setfillstyle(SOLID_FILL,GREEN);circle(themi.y*20+100,themi.x*20+100,9);TimeDelay(280000);for(i=0;i5;i+) if(themi.x=you.x/*如果失败的话*/loseyes();/*判断是否失败*/ if(false) break; key=bioskey(0);setcolor(0);/*把自己原来位置的人给删除掉 */circle(100+you.y*20

21、,100+you.x*20,9); fun(them);/*处理敌人*/ /*ESC 键退出游戏*/if(key=ESC)break;北京科技大学 计算机与通信工程学院 信息 1008 庄辉21 / 23/*SPACE 键重新开始本关游戏 */if (key=SPACE)goto loop;/*这里开始的判断主要是是否吃到豆子和碰到墙壁*/ else if(key=UP)you.x-; if(ayou.xyou.y=2)you.x+; else if(ayou.xyou.y=0)drawblackdou(you.x,you.y); else if(key=DOWN)you.x+;if(ayou

22、.xyou.y=2)you.x-;else if(ayou.xyou.y=0)drawblackdou(you.x,you.y); else if(key=RIGHT) you.y+;if(ayou.xyou.y=2)you.y-; 北京科技大学 计算机与通信工程学院 信息 1008 庄辉22 / 23else if(ayou.xyou.y=0) drawblackdou(you.x,you.y);else if(key=LEFT) you.y-;if(ayou.xyou.y=2)you.y+; else if(ayou.xyou.y=0) drawblackdou(you.x,you.y);

23、if(sum=50) break; /*执行了一次键盘后再画出自己的位置*/ setcolor(RED);circle(100+you.y*20,100+you.x*20,9);for(i=0;i5;i+)setcolor(GREEN);circle(themi.y*20+100,themi.x*20+100,9);setcolor(RED);/*判断自己是否碰到敌人*/loseyes();if(false) 北京科技大学 计算机与通信工程学院 信息 1008 庄辉23 / 23break; /*吃满豆子了即获胜条件*/if(sum=50)win();getch(); if(false) false1();getch(); closegraph();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报