首页 / C语言 / C语言小游戏---贪吃蛇
C语言小游戏---贪吃蛇
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言小游戏---贪吃蛇,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3624字,纯文字阅读大概需要6分钟。
内容图文
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #define High 15 #define Width 35 #define EnemyNum 5 int canves[High][Width] = {0}; //canves dimention,0 blank space, -1 frame, 1 snake head, >1 snake body, -2 foodint snakeMoveDirection; // control snake move directionint food_i, food_j; //food,snake eat food can become longvoid HideCursor() { // if cursor CONSOLE_CURSOR_INFO cursor_info= {1,0}; //second value is 0 mean hide cursor SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); } void gotoxy(int x, int y) { // move mouse to x,y position, similer clear screen HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle, pos); } void startup() { // init dataint i, j; // draw framefor(i=0; i<High; i++) { canves[i][0] = -1; canves[i][Width-1] = -1; } for(j=0; j<Width; j++) { canves[0][j] = -1; canves[High-1][j] = -1; } // init snake head position canves[High/2][Width/2] = 1; // init snake bodyfor(i=1; i<=4; i++) canves[High/2][Width/2-i] = 1+i; // init snake move direction snakeMoveDirection = 4; // init food position food_i = rand() % (High - 5) + 2; food_j = rand() % (Width - 5) + 2; canves[food_i][food_j] = -2; } void show() { // show windows gotoxy(0,0); //move mouse to 0,0 origin point, and redraw screenint i, j; for(i=0; i<High; i++) { for(j=0; j<Width; j++) { if(canves[i][j] == -1) printf("#"); //show frame #elseif(canves[i][j] == 1) printf("@"); //show snake head @elseif(canves[i][j] > 1) printf("*"); //show snake body *elseif(canves[i][j] == -2) printf("$"); //show food $else printf(""); //show nothing } printf("\n"); } } void updateWithoutInput() { int i, j, max=0, oldTail_i, oldTail_j, oldHead_i, oldHead_j, newHead_i, newHead_j; for(i=1; i<High-1; i++) for(j=1; j<Width-1; j++) { if(canves[i][j]>0) { // snake move all body plus 1 canves[i][j]++; // record snake tail position,snake tail has biggest numif(max<canves[i][j]) { max = canves[i][j]; oldTail_i = i; oldTail_j = j; } //record old snake head positionif(canves[i][j] == 2) { oldHead_i = i; oldHead_j = j; } } } // record snake head position // snake move upif(snakeMoveDirection == 1) { newHead_i = oldHead_i-1; newHead_j = oldHead_j; } // snake move downif(snakeMoveDirection == 2) { newHead_i = oldHead_i+1; newHead_j = oldHead_j; } // snake move leftif(snakeMoveDirection == 3) { newHead_i = oldHead_i; newHead_j = oldHead_j-1; } // snake move rightif(snakeMoveDirection == 4) { newHead_i = oldHead_i; newHead_j = oldHead_j+1; } // snake head crash frame or crash itself, game overif(canves[newHead_i][newHead_j]==-1||canves[newHead_i][newHead_j]>0) { printf("GAME OVER!"); exit(0); } // snake eat foodif(canves[newHead_i][newHead_j]==-2) { // new food, tail need stay food_i = rand() % (High - 5) + 2; food_j = rand() % (Width - 5) + 2; canves[food_i][food_j] = -2; } else { // no food, lose tail canves[oldTail_i][oldTail_j] = 0; } // new snake head canves[newHead_i][newHead_j] = 1; Sleep(150); } void updateWithInput() { char input; if(kbhit()) { //runing while user push keyboard input = getch(); if(input == ‘a‘) // move left snakeMoveDirection = 3; if(input == ‘d‘) // move right snakeMoveDirection = 4; if(input == ‘w‘) //move up snakeMoveDirection = 1; if(input == ‘s‘) //move down snakeMoveDirection = 2; } } int main() { startup(); // init datawhile(1) { // game loop run show(); // show windows updateWithoutInput(); //update don‘t need user updateWithInput(); //update need user } return0; }
原文:https://www.cnblogs.com/lely/p/12187681.html
内容总结
以上是互联网集市为您收集整理的C语言小游戏---贪吃蛇全部内容,希望文章能够帮你解决C语言小游戏---贪吃蛇所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。