设为首页 加入收藏

TOP

C语言对对碰游戏源码分享(二)
2018-02-28 08:57:04 】 浏览:522
Tags:语言 游戏 源码 分享
f (flag) return true; } return false; } void New(void) { static int old_score = -1, old_time = T; bool flag = false; if (Score != old_score) // 更新分数 { if (Score > 999999999) { if (MessageBox(GetHWnd(), "恭喜你达到了最高分!\n是否重新开始?", "游戏结束", MB_YESNO | MB_ICONQUESTION) == IDYES) Score = 0; else exit(0); } char s[15]; ostrstream strout(s, 15); strout <<'$' < setfont(30, 0, "微软雅黑"); setcolor(RGB(255, 128, 0)); outtextxy(480, 60, s); old_score = Score; flag = true; } if (Time != old_time) // 更新时间 { if (Time > old_time) putimage(540, 140, &jindutiao); setcolor(BLACK); for (int i = 0; i < T - Time; i++) { line(540, 140 + 2 * i, 580, 140 + 2 * i); line(540, 140 + 2 * i + 1, 580, 140 + 2 * i + 1); } old_time = Time; flag = true; } if (flag) // 写存档 { ofstream fout("存档.dat"); fout < < < < for (int i = 0; i < 9; i++) { for (int j = 0; j < 8; j++) fout < fout < } fout.close(); } } void print(void) { int i, j; for (i = 1; i < 9; i++) for (j = 0; j < 8; j++) putimage(60 * j, 60 * (i - 1), &img[int(gem[i][j])]); New(); } bool judge(void) { int i, j; for (i = 1; i < 9; i++) for (j = 0; j < 6; j++) if (gem[i][j] == gem[i][j + 1] && gem[i][j] == gem[i][j + 2]) return true; for (i = 1; i < 7; i++) for (j = 0; j < 8; j++) if (gem[i][j] == gem[i + 1][j] && gem[i][j] == gem[i + 2][j]) return true; return false; } void fall(void) { { int i, j, a[8] = {0}; bool sign = false; for (j = 0; j < 8; j++) for (i = 8; i >= 1; i--) if (gem[i][j] == blank) { a[j] = i; sign = true; break; } if (sign == false) return; IMAGE im[8]; for (j = 0; j < 8; j++) if (a[j] > 1) getimage(&im[j], 60 * j, 0, 60, 60 * (a[j] - 1)); for (i = 0; i < 60 ; i += 2) for (j = 0; j < 8; j++) if (a[j] > 0) { if (a[j] > 1) putimage(60 * j, i + 2, &im[j]); putimage(60 * j, i + 2 - 60, &img[int(gem[0][j])]); Sleep(1); } for (j = 0; j < 8; j++) if (a[j] > 0) { for (i = a[j]; i > 0; i--) gem[i][j] = gem[i - 1][j]; if (rand() % 50 == 0) gem[0][j] = color(rand() % 4 + 8); else gem[0][j] = color(rand() % 7 + 1); } } // 加对大括号使递归时撤销内存空间 if (soso()) fall(); if (judge()) draw(); } void draw(void) { { int i, j; bool a[9][8] = {false}; for (i = 1; i < 9; i++) for (j = 0; j < 6; j++) if (gem[i][j] == gem[i][j + 1] && gem[i][j] == gem[i][j + 2]) a[i][j] = a[i][j + 1] = a[i][j + 2] = true; for (i = 1; i < 7; i++) for (j = 0; j < 8; j++) if (gem[i][j] == gem[i + 1][j] && gem[i][j] == gem[i + 2][j]) a[i][j] = a[i + 1][j] = a[i + 2][j] = true; for (i = 1; i < 9; i++) for (j = 0; j < 8; j++) if (a[i][j]) { gem[i][j] = blank; Score += 10; } Sleep(V); Time += T / MaxT; if (Time > T) Time = T; print(); } // 加对大括号使递归时撤销内存空间 fall(); } bool quit(void) { char str[50]; ostrstream strout(str, 50); strout <<"得分:" < if (MessageBox(GetHWnd(), str, "游戏结束", MB_YESNO | MB_ICONQUESTION) == IDYES) return tru
首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言之十进制转为二进制的方法 下一篇C 分数矩阵题目描述和题解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目