打飞机游戏

学习一个语言最快的方法就是从游戏开始。

One:(操作性较慢)

#include "stdio.h"
#include <windows.h>
#include <conio.h>
#include <time.h>
#define Esc 27 //退出
#define Up 72 //上,下,左,右
#define Down 80
#define Left 75
#define Right 77
#define Kong 32 //发射子弹int x=10; //飞机坐标
int y=18;
int d2=10;//敌机坐标
int d1=10;
int d=10;
int r=1;
int r1=1;
int r2=1;
int t=1; // 游戏结束
int f=0; // 计分数
int m=3; // 敌机数
int j=0; // 歼敌数
char p; // 接受按键
void kongzhi(int bx,int by);//声明函数
void huatu();
void gotoxy(int x,int y) //移动坐标
{COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void hidden()//隐藏光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}//说明
void shuoming()
{printf("\t\t\t\n\n\n\n");printf("\t\t\t方向控制\n\n""\t\t\t上 ↑\n\n""\t\t\t下 ↓\n\n""\t\t\t左 ←\n\n""\t\t\t右 →\n\n""\t\t\t子弹 空格\n\n\n""\t\t\t退出请按 ESC\n");gotoxy(0,0);
}//判断我机死没死/游戏结束
void byebye()
{if((x==d&&y==r)||(x==d1&&y==r1)||(x==d2&&y==r2)){gotoxy(1,3);printf(" !!! 游戏已结束 !!!\n""*******************\n"" 您的总得分: %d\n\n"" 敌机数: %d\n"" 歼敌数: %d\n"" 命中率: %.0f %%\n""*******************\n",f,m,j,((float)j/(float)m)*100);while(!kbhit()){Sleep(500);gotoxy(1,12);printf(" 继续请按任意键...\n\n\n");Sleep(900);gotoxy(1,12);printf(" ");}gotoxy(0,0);huatu();f=0; m=0; j=0;if(x>=18) x--;else x++;gotoxy(x,y);printf("Ж");}
}// 计分/更新敌机
void jifan()
{if(x==d&&y==r){gotoxy(d,r);printf("3");Sleep(200);gotoxy(d,r); printf(" "); f+=2; r=0; j++;}if(x==d1&&y==r1){gotoxy(d1,r1);printf("1");Sleep(200);gotoxy(d1,r1);printf(" ");f+=3; r1=0; j++;}if(x==d2&&y==r2){gotoxy(d2,r2);printf("0");Sleep(200);gotoxy(d2,r2);printf(" ");f+=1; r2=0; j++;}gotoxy(26,2);printf(" %d \n",f);}//画图
void huatu()
{int i,n;for(i=0;i<=20;i++){for(n=0;n<=20;n++){printf("*");}printf("\n");}for(i=1;i<=19;i++){for(n=1;n<=19;n++){gotoxy(i,n);printf(" ");}}
}//随机产生敌机
void dfeiji()
{while(t){if(!r) {d=rand()%17+1; m++;}if(!r1) {d1=rand()%17+1; m++;}if(!r2) {d2=rand()%17+1; m++;}while(t){r++; r1++; r2++;gotoxy(d,r);printf("Ψ");gotoxy(d1,r1);printf("ж");gotoxy(d2,r2);printf("♀");Sleep(900);gotoxy(d,r);printf(" ");gotoxy(d1,r1);printf(" ");gotoxy(d2,r2);printf(" ");kongzhi(0,0);byebye();if(r==18) r=0;if(r1==18) r1=0;if(r2==18) r2=0;if(r==0||r1==0||r2==0) break;}}
}//操控飞机
void kongzhi(int bx,int by)
{int a;while (kbhit()){if((p=getch())==-32) p=getch();a=p;gotoxy(22,5);switch(a){//控制方向case Up:if (y!=1){gotoxy(x,y);printf(" ");y--;gotoxy(x,y);printf("Ж");}break;case Down:if (y!=18){gotoxy(x,y);printf(" ");y++;gotoxy(x,y);printf("Ж");}break;case Left:if (x!=1){gotoxy(x,y);printf(" ");x--;gotoxy(x,y);printf("Ж");}break;case Right:if (x!=18){gotoxy(x,y);printf(" ");x++;gotoxy(x,y);printf("Ж");}break;case Kong:{bx=y;for(by=y;by>1;) //发射子弹{by--;gotoxy(x,by);printf("θ");Sleep(10);gotoxy(x,by);printf(" ");y=by;jifan();if(r==0||r1==0||r2==0) break;}y=bx;}break;case Esc:t=0; break; //退出default:break;}}
}
void main()
{srand(time(NULL));shuoming();hidden();huatu();gotoxy(x,y);printf("Ж");gotoxy(22,2);printf("分数:");while (t){kongzhi(0,0);if(t)dfeiji ();}
}

Two:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
int feiji_x,feiji_y;//飞机位置
int zidan_x,zidan_y;//子弹位置
int diji_x,diji_y;//敌机位置
int h,w;
int score=0;//得分
int c=0;void gotoxy(int x,int y){              //定位光标位置到指定坐标HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X=x;pos.Y=y;SetConsoleCursorPosition(handle,pos);
}void startup(){h=20;w=60;feiji_x=h/2;feiji_y=w/2;zidan_y=feiji_y;zidan_x=-1;diji_y=w/2;diji_x=0;
}
void show(){int i,j;char dad;if(c==0){printf("======================================\n");printf("=           ---传说中的打飞机---             =\n");printf("=       字母asdw来进行控制飞机移动    =\n");printf("=       j------------发射子弹        =\n");printf("=                                    =\n");printf("======================================\n");c++;dad=getch();system("cls");}gotoxy(0,0);for(i=0;i<h;i++){for(j=0;j<w;j++){if(i==feiji_x && j==feiji_y)printf("@");else if(i==zidan_x && j==zidan_y)printf("↑");else if(i==diji_x && j==diji_y)printf("¥");else printf(" ");}printf("\n");}printf("当前您的得分:%d",score);Sleep(50);
}
void wuguan(){static int speed=0;if(speed<5)speed++;if(diji_x>h){diji_x=0;diji_y=rand()%w;}else{if(speed==5){diji_x++;speed=0;}}zidan_x--;if(zidan_y==diji_y&&zidan_x==diji_x){diji_x=0;zidan_x=-1;diji_y=rand()%w;score++;}}
void youguan(){char input;if(kbhit()){input=getch();if(input=='w')feiji_x--;if(input=='a')feiji_y--;if(input=='s')feiji_x++;if(input=='d')feiji_y++;if(input=='j'){zidan_y=feiji_y;zidan_x=feiji_x-1;}}
}
int main(){startup();//数据while(1){show();//展示一下画面wuguan();//与用户无关变量youguan();//与用户有关变量if(score==10){printf("通关了的,大佬,嘿嘿,很厉害的呦!\n");system("pause");break;}}return 0;
}

贪吃蛇游戏:

#include<stdio.h>
#include<time.h>
#include<windows.h>
#include<stdlib.h>#define U 1
#define D 2
#define L 3
#define R 4       //蛇的状态,U:上 ;D:下;L:左 R:右typedef struct SNAKE //蛇身的一个节点
{int x;int y;struct SNAKE *next;
}snake;//全局变量//
int score = 0, add = 10;//总得分与每次吃食物得分。
int status, sleeptime = 200;//每次运行的时间间隔
snake *head, *food;//蛇头指针,食物指针
snake *q;//遍历蛇的时候用到的指针
int endGamestatus = 0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退出游戏。//声明全部函数//
void Pos();
void creatMap();
void initSnake();
int biteSelf();
void createFood();
void cantCrossWall();
void snakeMove();
void pause();
void runGame();
void initGame();
void endGame();
void gameStart();void Pos(int x, int y)//设置光标位置
{COORD pos;HANDLE hOutput;pos.X = x;pos.Y = y;hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄SetConsoleCursorPosition(hOutput, pos);
}void creatMap()//创建地图
{int i;for (i = 0; i<58; i += 2)//打印上下边框{Pos(i, 0);printf("■");//一个方块占两个位置Pos(i, 26);printf("■");}for (i = 1; i<26; i++)//打印左右边框{Pos(0, i);printf("■");Pos(56, i);printf("■");}
}void initSnake()//初始化蛇身
{snake *tail;int i;tail = (snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置//tail->x = 24;tail->y = 5;tail->next = NULL;for (i = 1; i <= 4; i++)//初始长度为4{head = (snake*)malloc(sizeof(snake));head->next = tail;head->x = 24 + 2 * i;head->y = 5;tail = head;}while (tail != NULL)//从头到为,输出蛇身{Pos(tail->x, tail->y);printf("■");tail = tail->next;}
}
//??
int biteSelf()//判断是否咬到了自己
{snake *self;self = head->next;while (self != NULL){if (self->x == head->x && self->y == head->y){return 1;} self = self->next;}return 0;
}void createFood()//随机出现食物
{snake *food_1;srand((unsigned)time(NULL));//为了防止每次产生的随机数相同,种子设置为timefood_1 = (snake*)malloc(sizeof(snake));while ((food_1->x % 2) != 0)    //保证其为偶数,使得食物能与蛇头对其{food_1->x = rand() % 52 + 2;}food_1->y = rand() % 24 + 1;q = head;while (q->next == NULL){if (q->x == food_1->x && q->y == food_1->y) //判断蛇身是否与食物重合{free(food_1);createFood();}q = q->next;}Pos(food_1->x, food_1->y);food = food_1;printf("■");
}void cantCrossWall()//不能穿墙
{if (head->x == 0 || head->x == 56 || head->y == 0 || head->y == 26){endGamestatus = 1;endGame();}
}void snakeMove()//蛇前进,上U,下D,左L,右R
{snake * nexthead;cantCrossWall();nexthead = (snake*)malloc(sizeof(snake));if (status == U){nexthead->x = head->x;nexthead->y = head->y - 1;if (nexthead->x == food->x && nexthead->y == food->y)//如果下一个有食物//{nexthead->next = head;head = nexthead;q = head;while (q != NULL){Pos(q->x, q->y);printf("■");q = q->next;}score = score + add;createFood();}else                                               //如果没有食物//{nexthead->next = head;head = nexthead;q = head;while (q->next->next != NULL){Pos(q->x, q->y);printf("■");q = q->next;}Pos(q->next->x, q->next->y);printf("  ");free(q->next);q->next = NULL;}}if (status == D){nexthead->x = head->x;nexthead->y = head->y + 1;if (nexthead->x == food->x && nexthead->y == food->y)  //有食物{nexthead->next = head;head = nexthead;q = head;while (q != NULL){Pos(q->x, q->y);printf("■");q = q->next;}score = score + add;createFood();}else                               //没有食物{nexthead->next = head;head = nexthead;q = head;while (q->next->next != NULL){Pos(q->x, q->y);printf("■");q = q->next;}Pos(q->next->x, q->next->y);printf("  ");free(q->next);q->next = NULL;}}if (status == L){nexthead->x = head->x - 2;nexthead->y = head->y;if (nexthead->x == food->x && nexthead->y == food->y)//有食物{nexthead->next = head;head = nexthead;q = head;while (q != NULL){Pos(q->x, q->y);printf("■");q = q->next;}score = score + add;createFood();}else                                //没有食物{nexthead->next = head;head = nexthead;q = head;while (q->next->next != NULL){Pos(q->x, q->y);printf("■");q = q->next;}Pos(q->next->x, q->next->y);printf("  ");free(q->next);q->next = NULL;}}if (status == R){nexthead->x = head->x + 2;nexthead->y = head->y;if (nexthead->x == food->x && nexthead->y == food->y)//有食物{nexthead->next = head;head = nexthead;q = head;while (q != NULL){Pos(q->x, q->y);printf("■");q = q->next;}score = score + add;createFood();}else                                         //没有食物{nexthead->next = head;head = nexthead;q = head;while (q->next->next != NULL){Pos(q->x, q->y);printf("■");q = q->next;}Pos(q->next->x, q->next->y);printf("  ");free(q->next);q->next = NULL;}}if (biteSelf() == 1)       //判断是否会咬到自己{endGamestatus = 2;endGame();}
}void pause()//暂停
{while (1){Sleep(300);if (GetAsyncKeyState(VK_SPACE)){break;}}
}void runGame()//控制游戏
{Pos(64, 15);printf("不能穿墙,不能咬到自己\n");Pos(64, 16);printf("用↑.↓.←.→分别控制蛇的移动.");Pos(64, 17);printf("F1 为加速,F2 为减速\n");Pos(64, 18);printf("ESC :退出游戏.space:暂停游戏.");Pos(64, 20);printf("C语言研究中心 www.clang.cc");status = R;while (1){Pos(64, 10);printf("得分:%d  ", score);Pos(64, 11);printf("每个食物得分:%d分", add);if (GetAsyncKeyState(VK_UP) && status != D){status = U;}else if (GetAsyncKeyState(VK_DOWN) && status != U){status = D;}else if (GetAsyncKeyState(VK_LEFT) && status != R){status = L;}else if (GetAsyncKeyState(VK_RIGHT) && status != L){status = R;}else if (GetAsyncKeyState(VK_SPACE)){pause();}else if (GetAsyncKeyState(VK_ESCAPE)){endGamestatus = 3;break;}else if (GetAsyncKeyState(VK_F1)){if (sleeptime >= 50){sleeptime = sleeptime - 30;add = add + 2;if (sleeptime == 320){add = 2;//防止减到1之后再加回来有错}}}else if (GetAsyncKeyState(VK_F2)){if (sleeptime<350){sleeptime = sleeptime + 30;add = add - 2;if (sleeptime == 350){add = 1;  //保证最低分为1}}}Sleep(sleeptime);snakeMove();}
}void initGame()//开始界面
{Pos(40, 12);system("title C语言研究中心   www.clang.cc");printf("欢迎来到贪食蛇游戏!");Pos(40, 25);printf("              C语言研究中心  www.clang.cc.\n");system("pause");system("cls");Pos(25, 12);printf("用↑.↓.←.→分别控制蛇的移动, F1 为加速,2 为减速\n");Pos(25, 13);printf("加速将能得到更高的分数。\n");system("pause");system("cls");
}void endGame()//结束游戏
{system("cls");Pos(24, 12);if (endGamestatus == 1){printf("对不起,您撞到墙了。游戏结束.");}else if (endGamestatus == 2){printf("对不起,您咬到自己了。游戏结束.");}else if (endGamestatus == 3){printf("您的已经结束了游戏。");}Pos(24, 13);printf("您的得分是%d\n", score);while (getchar() != 'y'){    printf("close?[y]");}exit(0);
}void gameStart()//游戏初始化
{system("mode con cols=100 lines=30");initGame();creatMap();initSnake();createFood();
}int main()
{gameStart();runGame();endGame();return 0;
}

贪吃蛇游戏为转载,具体是谁的,我也不太清楚了,大一的时候保存的word文件

C语言打飞机、贪吃蛇游戏相关推荐

  1. 【C语言项目】贪吃蛇游戏(上)

    00. 目录 文章目录 00. 目录 01. 开发背景 02. 功能介绍 03. 欢迎界面设计 3.1 常用终端控制函数 3.2 设置文本颜色函数 3.3 设置光标位置函数 3.4 绘制字符画(蛇) ...

  2. C 语言实现经典贪吃蛇游戏

    原文链接:C语言 贪吃蛇游戏 文章目录 一.说明 二.效果 2.1 欢迎界面 2.2 游戏规则 2.3 得分排行 2.4 退出游戏 2.5 游戏界面 2.6 游戏结束 三.源码 3.1 cmd.h 3 ...

  3. 贪吃蛇c语言课程设计报告下载,c语言课程设计-贪吃蛇游戏

    c语言课程设计-贪吃蛇游戏 C 语言课程设计 1 山东交通学院 C 语言课程设计 贪吃蛇游戏 院(系)别 交通与物流工程学院 班 级 物联 131 学 号 130516122 姓 名 王赛 指导教师 ...

  4. 好玩的c语言编程游戏,C语言写个贪吃蛇游戏

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C语言写个贪吃蛇游戏 贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面 ...

  5. bat贪吃蛇游戏代码_C语言写个贪吃蛇游戏

    贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的. 我试了说 ...

  6. C语言写个贪吃蛇游戏

    贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的. 我试了说 ...

  7. x x x x c程序语言,C语言写个贪吃蛇游戏

    贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情.这个游戏我写完后放在知乎,竟然点赞的人数超级多.我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强的. 我试了说 ...

  8. 用C语言复现用贪吃蛇游戏(二)完结

    书接上回,咱们复现了贪吃蛇的页面,接下来是对游戏的操作进行复现: //移动小蛇 //第一步扫描数组canvas的所有元素,找到正数元素都加1 //找到最大元素(蛇尾巴),把其变为0 //找到等于2的元 ...

  9. [C语言] 自制的贪吃蛇游戏

    使用C语言自带的游戏图新库开发贪吃蛇 我看网上好多制作贪吃蛇的帖子都是对刚学习C语言的同学们很不友好,制作的都是控制台,黑窗口的贪吃蛇游戏,能做出来但是感觉很无趣,不太像正常的游戏,接下来我将制作完全 ...

  10. 用c语言写一个贪吃蛇游戏代码

    首先,贪吃蛇是一个经典的游戏,主要通过控制一条蛇在地图上吃食物,不断长长身体,最终实现最高分数. 以下是使用C语言编写贪吃蛇游戏的示例代码: ``` #include<stdio.h> # ...

最新文章

  1. php include和require
  2. Selenium实例2-截图爬取漫画
  3. 操作系统(二十五)吸烟者问题-单生产者多消费者问题
  4. PHP与SQL注入攻击
  5. mybatis实现反向工程
  6. 用Ant编译Flex项目的几点注意事项
  7. YbtOJ#662-交通运输【线段树合并,树状数组】
  8. java如何通过grpc连接etcd_grpc通过 etcd 实现服务发现与注册-源码分析
  9. ReactJs 第二章 JSX
  10. 它来了,它终于来了!3299元的新款iPhone SE上架了
  11. matlab 分数 函数,Matlab 中 residuez函数的使用
  12. dcs world f15c教学_烟台TSXP57353M【四点零自动化】DCS系统
  13. Redis的安装启动,菜鸟使用(windows)
  14. 弹性地基梁板的计算理论_第八章 弹性地基梁的计算理论
  15. 运放实现方波三角波发生器-总结报告
  16. 初步使用ligerui
  17. mac用brew安装mysql报错1045(28000)
  18. Studio用布局编辑器设计UI界面
  19. 手机验证码接收注册新账户
  20. 十多个巨头App上可跑智能小程序了

热门文章

  1. 安装anaconda并配置虚拟环境
  2. 《天天数学》连载66:三月六日
  3. 高校计算机实验技术 面试,重实验技术型专业考研复试经验分享
  4. 2021烟台市地区高考成绩排名查询,2021年烟台高考各高中成绩及本科升学率数据排名及分析...
  5. android webview 横竖屏_WebView实现全屏播放的一种方法
  6. 混合云时代 管云是王道
  7. android应用更改系统语言,android app根据系统语言设置应用语言
  8. ps去除人像脸上的油光
  9. python 把Excel表格复制到Word保持格式不变
  10. Ubuntu 装机实录