实例介绍
【实例简介】
【实例截图】
【核心代码】
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <time.h> #include <conio.h> #define HIGH 22 //边界 #define WIDTH 30 #define ENEMY_MAX 5 int air[HIGH][WIDTH]={0};//图 int enemy_x[ENEMY_MAX],enemy_y[ENEMY_MAX];//敌机增加 int air_x,air_y;//飞机 int bullet_x,bullet_y;//子弹位置 int score;//得分 int boos_x,boos_y;//暂未实现 int on_file;//是否读写存档 int line_file;//在线存档 bool Bool_on_file_input_and_without(); void Init_on_file(); void Init(); void Show(); void Updatewithoutinput(); void Updatewithinput(); void gotoxy(int ,int ); int main () { Init_on_file(); Init(); while(1){ Show(); Updatewithoutinput(); Updatewithinput(); } return 0; } bool Bool_on_file_input_and_without(){ if(on_file==1){ return true; } else if(on_file==2){ return false; } return false; } void Init_on_file(){ line_file=0; int p_math_key=0; do{ printf("读取存档输入1\n"); printf("重新开始游戏输入2\n"); p_math_key=getch(); if(p_math_key==49){ FILE *file=NULL; file=fopen("F:\\游戏加自制外挂\\how\\飞机2存档系列\\飞机2存档1.txt","r"); if(file==NULL){printf("exit\n");exit(0);} for(int k=0;k<ENEMY_MAX;k ){ air[enemy_x[k]][enemy_y[k]]=0; fscanf(file,"%d %d ",&enemy_x[k],&enemy_y[k]); air[enemy_x[k]][enemy_y[k]]=-1; } fscanf(file,"%d %d %d",&air_x,&air_y,&score); // if(air_y==29){ // air_y=WIDTH-3; // } // printf("%d",air_y); //测试漏洞用的调试 // system("pause"); air[air_x][air_y]=1; fclose(file); bullet_x=0;//-1 会出现漏洞问题 bullet_y=air_y; //air[bullet_x][bullet_y]=2; // on_file=1; break; } else if(p_math_key==50){ on_file=0; break; } else printf("请重新输入: \n"); }while(p_math_key!=1 || p_math_key!=2); } void Init(){ if(Bool_on_file_input_and_without()==false){ srand((int)time(0)); int k; for(k=0;k<ENEMY_MAX;k ){ // enemy_x[k]=0; // enemy_y[k]=0; air[enemy_x[k]][enemy_y[k]]=0; enemy_x[k]=rand()%2; enemy_y[k]=rand()%WIDTH; air[enemy_x[k]][enemy_y[k]]=-1; } air_x=HIGH-1; air_y=WIDTH/2; air[air_x][air_y]=1; bullet_x=-1; bullet_y=air_y; air[bullet_x][bullet_y]=2; score=0; } } void Show(){ gotoxy(0,0); int i,j; for(i=0;i<HIGH;i ){ for(j=0;j<WIDTH;j ){ if(air[i][j]==-1){ printf("9"); } else if (air[i][j]==1){ printf("*"); } else if (air[i][j]==2){ printf("|"); } else printf(" "); if(i==5 && j==WIDTH-1){ printf(" 储存新档按P键 "); if(line_file>0){ printf("成功存档%d次",line_file); } } } printf("\n"); } printf("得分:%d",score); // Sleep(20); } void Updatewithoutinput(){//用户无关操作 // int k; int i,j; for(i=0;i<HIGH;i ){ for(j=0;j<WIDTH;j ){ if(air[i][j]==2){ bullet_x=i; bullet_y=j; air[bullet_x][bullet_y]=0; if(bullet_x>0){//不让子弹超越边界 bullet_x--; air[bullet_x][bullet_y]=2; } for(int k=0;k<ENEMY_MAX;k ) if(bullet_x == enemy_x[k] && bullet_y == enemy_y[k]){//子弹击中敌机 air[enemy_x[k]][enemy_y[k]]=0; enemy_x[k]=rand()%2; enemy_y[k]=rand()%WIDTH; air[enemy_x[k]][enemy_y[k]]=-1; score ; } } } } while(1){ static int speed=0; speed ; if(speed == 20){ for(int k = 0;k<ENEMY_MAX;k ){ air[enemy_x[k]][enemy_y[k]]=0; enemy_x[k] ; air[enemy_x[k]][enemy_y[k]]=-1; } speed=0; }else break; } for(int o=0;o<ENEMY_MAX;o ){ //敌机降落到了底部,消失,并重新生成 if(enemy_x[o]==air_x && enemy_y[o]==air_y){ //gotoxy(0,0); system("cls"); printf("最终得分: %d\n",score); system("pause"); exit(0); } } for(int k=0;k<ENEMY_MAX;k ){ //敌机降落到了底部,消失,并重新生成 if(enemy_x[k]>HIGH){ air[enemy_x[k]][enemy_y[k]]=0; enemy_x[k]=rand()%2; enemy_y[k]=rand()%WIDTH; air[enemy_x[k]][enemy_y[k]]=-1; } } } void Updatewithinput(){ //用户有关操作 if(GetAsyncKeyState(0x41)&0x8000 || GetAsyncKeyState(VK_LEFT)&0x8000){ if(air_y>0){ air[air_x][air_y]=0; air_y--; air[air_x][air_y]=1;} } if(GetAsyncKeyState(0x44)&0x8000 || GetAsyncKeyState(VK_RIGHT)&0x8000){ if(air_y<WIDTH-1){ air[air_x][air_y]=0; air_y ; air[air_x][air_y]=1;} } if(GetAsyncKeyState(0x20)&0x8000){//子弹 if(air_x>0){ bullet_x=air_x-1; bullet_y=air_y; air[bullet_x][bullet_y]=2; //air[air_x-1][air_y]=2; } } if(GetAsyncKeyState(87)&0x8000 || GetAsyncKeyState(VK_UP)&0x8000){ if(air_x>0){ air[air_x][air_y]=0; air_x--; air[air_x][air_y]=1;} } if(GetAsyncKeyState(83)&0x8000 || GetAsyncKeyState(VK_DOWN)&0x8000){ if(air_x<HIGH-1){ air[air_x][air_y]=0; air_x ; air[air_x][air_y]=1;} } /* if(GetAsyncKeyState(69)&0x8000){ skill_e=1; skill_e_x=air_x-1; skill_e_y=air_y; air[skill_e_x][skill_e_y]=3; } */ if(GetAsyncKeyState(80)){//P FILE *file=NULL; file=fopen("F:\\游戏加自制外挂\\how\\飞机2存档系列\\飞机2存档1.txt","w"); if(file == NULL){exit(0);} for(int k=0;k<ENEMY_MAX;k ){ fprintf(file,"%d %d ",enemy_x[k],enemy_y[k]); } fprintf(file,"%d %d %d",air_x,air_y,score); fclose(file); line_file ; } } /* void gotoxy(int x,int y){ DWORD n_K=STD_OUTPUT_HANDLE; HANDLE handle = GetStdHandle(n_K); COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(handle,coord); } */ void gotoxy(int x,int y){ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(handle,coord); }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论