自制游戏合集

本文介绍了两个经典游戏——小恐龙和Bloxorz的C++编程实现。小恐龙游戏涉及随机生成障碍物和玩家操控,Bloxorz游戏则是一个基于键盘输入的策略游戏,玩家需要让方块到达目标位置。这两个游戏展示了基本的游戏逻辑和控制流程。
摘要由CSDN通过智能技术生成

一、小恐龙

5*5的。
最开始地面加载不出来,就当是特性吧。

#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string>
#define KEY_DOWN(VK_NONAME)((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
using namespace std;
int main(){
	string a[6][15];
	int ra;
	int score=0, tmp;
	int x1=1,y1=2,x2=1,y2=3;
	int jump=0;
	for(int i=0;i<5;i++)
	{
		for(int j=0;j<13;j++)a[i][j]=" ";
	}
	while(1)
	{
		tmp = score / 10;
		for(int i=1;i<5;i++)
		{
			for(int j=0;j<14;j++)
			a[i][j-1]=a[i][j];
		}
		a[0][13]=a[1][13]=a[2][13]=a[3][13]=" ";
		a[4][13]=".";
		srand((unsigned)time(NULL)+rand());
		ra=rand()%6;
		if(ra==1&&a[3][12]!="|"&&a[2][12]!="o"&&a[3][11]!="|"&&a[4][0]!=" "&&a[1][12]!="o")a[3][13]="|";
		if(ra==2&&a[3][12]!="|"&&a[2][12]!="o"&&a[3][11]!="|"&&a[4][0]!=" "&&a[1][12]!="o")a[3][13]=a[2][13]="|";
		if(ra==2&&a[3][12]=="|"&&a[2][12]!="o"&&a[3][11]!="|"&&a[4][0]!=" "&&a[1][12]!="o")a[3][13]=a[2][13]="|"; 
		if(ra==3&&a[3][12]!="|"&&a[3][11]!="o"&&a[2][12]!="|"&&a[4][0]!=" "&&score>=100)a[2][13]="o";
		if(ra==4&&a[4][0]!=" "&&a[3][12]!="|"&&score>=100) a[1][13]="o";
		if(jump==0)x1=1;y1=2;x2=1;y2=3;
		if(KEY_DOWN('S'))
		{
			if(!jump){
			x1=2;y1=3;}
			else {
			jump=0;
			x1=1;y1=2;x2=1;y2=3;
		}
		}
		else if(KEY_DOWN('W')&&jump==0)
		{
			y1-=2;y2-=2;
			jump=1;
		}
		if(jump==4)
		{
			jump=0;
			x1=1;y1=2;x2=1;y2=3;
		}
		if(jump!=0)jump++;
		for(int i=0;i<5;i++)
		{
			for(int j=0;j<14;j++)
			{
				if(i==y1&&j==x1||i==y2&&j==x2)
				{
					SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
					cout<<"龙";
					if(a[i][j]=="o"||a[i][j]=="|"){
						cout<<"You died"<<endl;
						cout<<"score:"<<score;
						char c;
						cin>>c;
						return 0;
				    }
				}
				else if(a[i][j]=="o")
				{
	            if((score/200)%2==0)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	            else  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	            cout<<a[i][j];
				}
			    else if(a[i][j]=="."||a[i][j]=="|"){
	                if((score/200)%2==0)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	                else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	                cout<<a[i][j];
			    }
			    else{
	                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	                if(rand()%50==1)a[i][j]=" "; 
	                cout<<a[i][j];
			    }
			}
			cout<<endl;
		}
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
		cout<<"score:"<<score;
		score++;
		if(score>2000)Sleep(50); 
		else Sleep(250 - tmp);
		system("cls");
	}
	return 0;
}

2、bloxorz

玩法详见poj

#include<bits/stdc++.h>
#include <conio.h>
using namespace std;
int main() {
	int x1=3,y1=1,x2,y2,cnt=0;
	char move;
	char map[7][7]={
		'#','#','#','#','#','#','#',
        '#','.','.','.','#','#','#',
        '#','.','.','#','#','O','#',
        '#','.','.','<','.','E','#',
        '#','.','.','<','.','E','#',
        '#','.','.','.','.','^','#',
        '#','#','#','#','#','#','#'};
    int flag=1;
    int win=0;
    while(1){
    	system("cls");
    	if(flag==1){x2=x1;y2=y1;if(map[y1][x1]=='O')win=1;if(map[y1][x1]=='E')win=-1;}
    	if(flag==2){y2=y1-1;x2=x1;}
    	if(flag==3){x2=x1-1;y2=y1;}
    	for(int i=0;i<7;i++){
			for(int j=0;j<7;j++){
				if(i==y1&&j==x1||i==y2&&j==x2){
				   cout<<'X';
					if(map[i][j]=='#'||map[i][j]=='<'||i<0||i>6||j<0||j>6)win=-1;
					if(map[i][j]=='^'){
						for(int p=0;p<6;p++){
							for(int q=0;q<6;q++){
								if(map[p][q]=='<')map[p][q]='>';
								else if(map[p][q]=='>')map[p][q]='<';
						   }
					   }
					}
				}
				else cout<<map[i][j];
			}
			cout<<endl;
		}
		if(win==-1){
			cout<<"Lose";
			return 0;
		}
		if(win==1){
			cout<<"win";
			return 0;
		}
		move = _getch();
    	if(move=='w'){
    		y1--;
			if(flag==1){flag=2;}
			else if(flag==2){y1--;flag=1;}
			else if(flag==3){flag=3;} 
		}
		if(move=='s'){
    		y1++;
			if(flag==1){flag=2;y1++;}
			else if(flag==2){flag=1;}
			else if(flag==3){flag=3;} 
		}
		if(move=='a'){
    		x1--;
			if(flag==1){flag=3;}
			else if(flag==2){flag=2;}
			else if(flag==3){flag=1;x1--;} 
		}
		if(move=='d'){
    		x1++;
			if(flag==1){x1++;flag=3;}
			else if(flag==2){flag=2;}
			else if(flag==3){flag=1;} 
		}
	}
	return 0; 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值