·学了编程干什么?做题?做计算?
NONONONONO~~~;
已经学了简单的编程,不做一些小游戏怎么行?
今天,我们就来了解一下关于做小游戏的技巧以及其中使用的函数;

(本教程面向会循环嵌套,分支,一维数组,多重分支的人,如果不会请自行回避)

本次提供的是一个找宝藏的游戏(也就是宝藏隐藏在某个地方,然后用键盘wasd操控主人物寻找的游戏,虽然没有任何玩的意义~~(如果有应该是5岁小孩玩的。。。。)~~ )

首先来介绍一下键盘输入函数以及使用的头文件:
1.

#include<conio.h>
a=getch();

getch()是键盘输入的函数(无需回车),什么意思呢,就是立即输入立即反应(还是听不懂就从现实代码自己体会了)
其中的a=getch()的意思是变量a由键盘输入(一定要字符变量);
2.

#include<windows.h>
Sleep(1000);
system("cls")

Sleep就是用来延长时间的,1000就是一秒,cls是清屏
3.

#include<bits/stdc++.h>
srand((int)time(0));
int l=rand()%(n*n-1+1)+1;

上面那个头文件是万能头(因为不知道原来是哪个头文件),这个函数的作用就是随机出数,
变量 L 将会得到一个随机分配的值,在rand()%(n*n-1+1)+1中,nn是最大值,1
是最小值,也就是在1~n
n内分配值;

开始教学

首先定义以下变量以及开始说的话

cout<<"这是一个一群傻屌找宝藏的游戏 !没错!你没看错!\n\n";
	Sleep(3000);
	system("cls");
	cout<<"选择模式:1.简单(有留下走路痕迹)   2.困难(没有留下)" ;
	int d;
	cin>>d; //难度
	system("cls");
	int n,k=1;//n是棋盘大小,k是步数
	srand((int)time(0));//介绍过了,是生成随机数
	int l=rand()%(n*n-1+1)+1;
	cin>>n;
	char b[10001];//用于键盘输入的字符数组
	int p=(n*n)/2;//设置角色起始位置(没多大意义)
	char a[n*n];//棋盘内容
	int s=n*n;

然后就是棋盘初始化:

for(int i=1;i<=s;i++){//输出初始化
		if(d==1){
			a[i]='#';
		}	
		if(d==2){//难度2
			a[i]='*';
		}
	}	
for(int i=1;i<=s;i++){//输出
		a[i]='#';
		cout<<" ";//加空格,看起来舒服
		cout<<a[i];
		if(i%n==0){
			cout<<endl;
		}
	}

效果如下:

然后就是其中的键盘输入:

while(k!=0){
		k++;//键盘输入第k次,也就是步数
		switch(b[k]=getch()){
			case 'd':a[p+1]='*'//切换新的位置;p++;break;//往右走
			case 'w':a[p-n]='*'//切换新的位置;p=p-n;break;//往上走
			case 's':a[p+n]='*'//切换新的位置;p=p+n;break;//往下走
			case 'a':a[p-1]='*'//切换新的位置;p--;break;//往左走
		}}

接下来就是主要代码了,如下:

system("cls");//清屏
		for(int i=1;i<=s;i++){
			cout<<" ";	//间隔,为了美化
			if(i==p){
				cout<<"@";//角色位置;
				if(p==l){
				system("cls");//胜利条件
				cout<<"你赢了";	
				Sleep(1000);
				return 0;
			}
				if(i%n==0){
				cout<<endl;//方阵组成,每n行回车一次
			}
			continue;//防止重复,直接开启下一轮循环
			}
			cout<<a[i];//输出目前棋盘
			if(i%n==0){
				cout<<endl;//防止重复,直接开启下一轮循环
			}
		}
		if(d==1){//作为简单模式的提示
		if(p/n==l/n){
			if(p<l){
				cout<<"提示:在右边"<<endl;
				cout<<"使用步数:"<<k; 
			}
			if(p>l){
				cout<<"提示:在左边"<<endl;
				cout<<"使用步数:"<<k; 
			}
			continue;
		}
		if(p<l){	
			cout<<"提示:在下边"<<endl;
		}	
		if(p>l){
			cout<<"提示:在上边"<<endl;
		} 
		}
		cout<<"使用步数:"<<k; //步数
}

将这些代码组合,得到这样的效果(自制垃圾游戏,dalao勿喷)




现在是全部的代码:

#include<iostream>
#include<bits/stdc++.h>
#include<conio.h>
#include<stdio.h>
#include<windows.h>
using namespace std;
int main(){
	cout<<"这是一个一群傻屌找宝藏的游戏 !没错!你没看错!\n\n";
	Sleep(3000);
	system("cls");
	cout<<"选择模式:1.简单(有留下走路痕迹)   2.困难(没有留下)" ;
	int d;
	cin>>d; 
	system("cls");
	int n,k=1;
	cout<<"选择棋盘大小:";	
	cin>>n;
	system("cls");	
	srand((int)time(0));
	int l=rand()%(n*n-1+1)+1;	
	char b[10001];
	int p=(n*n)/2;
	char a[n*n];
	int s=n*n;
	for(int i=1;i<=s;i++){
		if(d==1){
			a[i]='#';
		}	
		if(d==2){
			a[i]='*';
		}
	}	
	a[p]='*';
	for(int i=1;i<=s;i++){
		cout<<" ";
		cout<<a[i];
		if(i%n==0){
			cout<<endl;
		}
	}
	while(k!=0){
		k++;
		switch(b[k]=getch()){
			case 'd':a[p+1]='*';p++;break;
			case 'w':a[p-n]='*';p=p-n;break;
			case 's':a[p+n]='*';p=p+n;break;
			case 'a':a[p-1]='*';p--;break;
		}
		system("cls");
		for(int i=1;i<=s;i++){
			cout<<" ";	
			if(i==p){
				cout<<"@";
				if(p==l){
				system("cls");
				cout<<"你赢了";	
				Sleep(1000);
				return 0;
			}
				if(i%n==0){
				cout<<endl;
			}
			continue;
			}
			cout<<a[i];
			if(i%n==0){
				cout<<endl;
			}
		}
		if(d==1){
		if(p/n==l/n){
			if(p<l){
				cout<<"提示:在右边"<<endl;
				cout<<"使用步数:"<<k; 
			}
			if(p>l){
				cout<<"提示:在左边"<<endl;
				cout<<"使用步数:"<<k; 
			}
			continue;
		}
		if(p<l){	
			cout<<"提示:在下边"<<endl;
		}	
		if(p>l){
			cout<<"提示:在上边"<<endl;
		} 
		}
		cout<<"使用步数:"<<k; 
		
}

	return 0;
}

希望我写的博客对你有帮助;
点个关注呗!点赞也行!

更多推荐

c++游戏编程初步(超简单)教学