logo资料库

C语言课程设计(俄罗斯方块游戏).doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
程序设计基础课程设计 俄罗斯方块游戏 院 班 组 组 系:计算机科学技术学院 级:师 计 09-2 班 长:高 正 阳 员:陈东、班海燕、李晓惠 指导教师:黄 绍 义 2009 年 12 月 23 日
*一、实践的目的和要求 加深对《C 语言》课程所学知识的理解,进一步巩固 C 语言语 法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序, 从而具备解决综合性实际问题的能力。 *二、实践内容 在熟练掌握 C 语言的基本知识:数据类型(整形、实型、字符 型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增 自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循 环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握 各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。 *三、 实践任务 1.欢迎画面 2. 附加声音界面 3.俄罗斯方块课程设计系统(自己设计界面) *四、设计流程
编程
/*键盘码*/ /* 时钟中断的中断号 */ /*x,y 是用作记录每个方块的最左上角的编号*/ *五、相关程序 #include #include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define TIMER 0x1c struct Snow { int x; int y; int speed; }snow[100]; typedef struct { int box[4][4]; int color; int next; }SHAPE; int x=0,y=4,form[16][12]={ {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1}, }; SHAPE shapes[19]={ /*俄罗斯方块初始化界面*/ {1,0,0,0, 1,0,0,0, 1,1,0,0, 0,0,0,0,CYAN,1}, {1,1,1,0, 1,0,0,0, 0,0,0,0, 0,0,0,0,CYAN,2}, {1,1,0,0, 0,1,0,0, 0,1,0,0, 0,0,0,0,CYAN,3}, {0,0,0,0, 0,0,1,0, 1,1,1,0, 0,0,0,0,CYAN,0}, {0,1,0,0, 0,1,0,0, 1,1,0,0, 0,0,0,0,MAGENTA,5}, {1,0,0,0, 1,1,1,0, 0,0,0,0, 0,0,0,0,MAGENTA,6}, {1,1,0,0, 1,0,0,0, 1,0,0,0, 0,0,0,0,MAGENTA,7}, {1,1,1,0, 0,0,1,0, 0,0,0,0, 0,0,0,0,MAGENTA,4}, {1,0,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0,YELLOW,9}, {0,1,1,0, 1,1,0,0, 0,0,0,0, 0,0,0,0,YELLOW,8},
{0,1,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0,BROWN,11}, {1,1,0,0, 0,1,1,0, 0,0,0,0, 0,0,0,0,BROWN,10}, {0,1,0,0, 1,1,1,0, 0,0,0,0, 0,0,0,0,WHITE,13}, {1,0,0,0, 1,1,0,0, 1,0,0,0, 0,0,0,0,WHITE,14}, {1,1,1,0, 0,1,0,0, 0,0,0,0, 0,0,0,0,WHITE,15}, {0,1,0,0, 1,1,0,0, 0,1,0,0, 0,0,0,0,WHITE,12}, {1,0,0,0, 1,0,0,0, 1,0,0,0, 1,0,0,0,RED,17}, {1,1,1,1, 0,0,0,0, 0,0,0,0, 0,0,0,0,RED,16}, {1,1,0,0, 1,1,0,0, 0,0,0,0, 0,0,0,0,BLUE,18} }; int TimerCounter=0; int snownum=0; int size; int change1=10; int annal[4][2],score=0,level=0,color,Boxnumber; void plot();
void operation(); void *save1,*save2; void Copy(); void DrawSnow(); void Pr(); void void { interrupt interrupt *oldhandler)(); ( newhandler( ) TimerCounter++; TimerCounter==36; oldhandler(); } void { SetTimer(void interrupt (*IntProc)()) oldhandler=getvect(TIMER); disable(); setvect(TIMER,IntProc); enable(); /* 开启中断 */ /* 设置新的时钟中断处理过程时,禁止所有中断 */ } void { KillTimer() disable(); setvect(TIMER,oldhandler); enable(); } void main() { /* 修改时钟中断 */ int gdriver=DETECT,gmode; SetTimer(newhandler); registerbgidriver(EGAVGA_driver); initgraph(&gdriver,&gmode,"c:\\turboc2"); Copy(); DrawSnow(); closegraph(); initgraph(&gdriver,&gmode,"E:\\TC20H\\INCLUDE\\GRAPHICS.H"); plot(); operation(); getch(); /*初始化图形*/ } { void Copy() setcolor(0); setfillstyle(SOLID_FILL,15); fillellipse(200,200,4,4);
size=imagesize(196,196,204,204); save1=malloc(size); save2=malloc(size); getimage(196,196,204,204,save1); getimage(96,96,104,104,save2); } void Pr() { int fr[]={392,392,440,294,262,262,220,294,392,392, 440,532,440,392,262,262,220,294,392,294, 262,247,220,196,392,294,330,294,262,262, 220,294,330,294,262,294,22,247,220,196}; setcolor(change1/10); settextstyle(0,0,3); outtextxy(100,200,"Welcome to our Game!!!”); sound(fr[change1/10]); } void DrawSnow() { int i; int sx[62]; randomize(); for(i=0;i<62;i++) sx[i]=(i+2)*10; cleardevice(); while(!kbhit()) { Pr(); if (snownum!=100) { snow[snownum].speed=2+random(5); i=random(62); snow[snownum].x=sx[i]; snow[snownum].y=10-random(100); } for(i=0;i
分享到:
收藏