一个好玩的小游戏(纯C语言编写)
来源:互联网 发布:如何抢小米6 知乎 编辑:程序博客网 时间:2024/04/29 09:17
最近在看知乎是发现了一个这一个专栏
https://zhuanlan.zhihu.com/c2game
从中获取的许多知识,本文中的游戏也是从里面学到的,不过本人又自己加了一些功能。
这是一个类似于飞机大战的游戏,不过目前代码量比较小,所以看起来非常简陋游戏界面如下
更新日志,本人将原来的原来的代码有进一步的优化了一下,之前是只有一个非常小的战机现在更新后可以产生一个非常大的战机(看起来也更有气势了~~)和敌人的战机,不过死亡的判定条件和边境的判断条件还没有做好,等下次再继续加油。2017.3.12更新
就是这样一个简陋的游戏(实在惭愧,本人目前能力有限)
如下图:
完整的代码如下:
#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>#include<stdlib.h>#define MAX 100long long int speed = 0;//控制敌机的速度 int position_x,position_y;//飞机的所在位置 int high,width;//地图的大小 int bullet_x,bullet_y;//子弹的位置 int enemy_x,enemy_y;//敌人的位置 int map[MAX][MAX];/*0表示空白,1表示战机*的区域,2表示敌人战机的位置。 3表示上下围墙,4表示左右围墙,5表示子弹的位置*/ int score;void starup()//初始化所有的信息 { high = 20; width = 30; position_x = high/2; position_y = width/2; bullet_x = 0; bullet_y = position_y; enemy_x = 2; enemy_y = position_y-1; score = 0;}void startMap(){ int i,j; for(i=1;i<=high-1;i++) { map[i][1] = 4; for(j=2;j<=width-1;j++) map[i][j] = 0; map[i][width] = 4; } //下方围墙的初始化 i = high; for(j=1;j<=width;j++) map[i][j] = 3; map[bullet_x][bullet_y] = 5; /*这里是战机大小的初始化开始*/ map[position_x-1][position_y] = 1; i = position_x; for(j=position_y-2;j<=position_y+2;j++) map[i][j] = 1; map[position_x+1][position_y-1] = 1; map[position_x+1][position_y+1] = 1; /*** 初始化结束 **/ /* 敌人战机的初始化 */ map[enemy_x][enemy_y] = 2; map[enemy_x-1][enemy_y-1] = 2; map[enemy_x-1][enemy_y+1] = 2; /* 敌人战机初始化结束*/}void HideCursor()//隐藏光标 { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);}void gotoxy(int x,int y)//清理一部分屏幕 { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos; pos.X = x; pos.Y = y; SetConsoleCursorPosition(handle,pos);}void updateWithoutInput()//于输入无关的跟新 { if(bullet_x > 0) bullet_x--; if((bullet_x == enemy_x) && (bullet_y == enemy_y))//当敌人的飞机被击中时 { score++; enemy_x = 0; enemy_y = rand() % width; bullet_x = 0; } if(enemy_x > high)//当飞机超出区域 { enemy_x = 0; enemy_y = rand()%width; } if(speed == 1) for(int i=1;i<=10000;i++)//用来控制敌机的速度 { for(int j=1;j<=1000;j++) { speed = 1; } } speed = 0; if(speed == 0) { enemy_x++; speed = 1; }}void updateWithInput()//与输入有关的更新 { char input; if(kbhit()) { input = getch(); if(input == 'a') position_y--; if(input == 's') position_x++; if(input == 'd') position_y++; if(input == 'w') position_x--; if(input == ' ') { bullet_x = position_x - 1; bullet_y = position_y; } }}void show()//展示的内容 { gotoxy(0,0); int i,j; for(i=1;i<=high;i++) { for(j=1;j<=width;j++) { if(map[i][j] == 0) printf(" "); if(map[i][j] == 1) printf("*"); if(map[i][j] == 2) printf("#"); if(map[i][j] == 3) printf("~"); if(map[i][j] == 4) printf("|"); if(map[i][j] == 5) printf("|"); } printf("\n"); } printf("\n你的得分:%d\n\n",score); printf("操作说明: ASDW分别操作 左下右上四个的移动\n"); printf("**空格是发出子弹**\n");}int main(){ starup(); while(1) { HideCursor(); startMap(); show(); updateWithoutInput(); updateWithInput(); } return 0;}
如果你看不明白,我建议你先去上面的那个连接中看看,他会教你如何一步步的进行最后做成一个完整的游戏。
0 0
- 一个好玩的小游戏(纯C语言编写)
- c语言编写的小游戏
- 【扫雷】编写一个小游戏--扫雷的c语言实现
- 一个好玩的小游戏破解。
- 分析一个好玩的c语言程序
- 分析一个好玩的c语言程序
- 【C语言】实现一个好玩的三子棋
- 小游戏1024纯C语言
- 好玩的 C 语言
- 【三子棋】用c语言编写一个小游戏---三子棋
- C语言编写扫雷小游戏
- C语言写的一个2048小游戏
- 好玩的小游戏:POINTER
- 用C语言编写的 俄罗斯方块小游戏(tetris game)
- 好玩的c语言程序!
- 一个C的小游戏
- c语言:编写猜数字小游戏。
- c语言编写猜数小游戏
- Linux内核启动
- 每日打卡 2017.03.12 POJ题目分类 初级-一、基本算法
- Linux零碎知识点
- RxSwift 的简单使用
- POJ1251 kruskal算法
- 一个好玩的小游戏(纯C语言编写)
- 分类器学习(二)
- CountDownLatch 和 CyclicBarrier
- 安卓设计模式之观察者模式
- Linux shell基本练习
- 捋一捋dropbox源码
- Lotto hdu1342
- C++ 文件重定向
- C++中cin、cin.get()、cin.getline()、getline()、gets()等