C++游戏编程:Pacman

Pacman

基于贪吃蛇小游戏,本人写了个界面极其简单的吃豆人游戏。
“#”代表吃豆人,游戏边框用“@”表示,豆子用“o”表示。
豆子每次吃完随机出现在界面,吃到豆子加1分。
当人撞墙游戏结束,并显示最终分数。

源代码:

#include<iostream>
#include<windows.h>
#include<ctime>
#include<cstdlib>
#include<conio.h>
using namespace std;
#define N 20
#define M 50
char board[N][M];
int a = 12;
int b = 10;
int food_x;
int food_y;
int count = 0;

//游戏边框
void Fence(){
	for(int i = 0;i<N;i++)
	    for(int j = 0;j<M;j++){
	    	if(i == 0 || i == N-1 || j == 0 || j == M-1){
	    		board[i][j] = '@';
	    	}
	    	else{
	    		board[i][j] = ' ';
	    	}
	    }
}

//界面显示
void Display(){
	cout<<"方向键控制,吃豆子获得分数!"<<endl;
	for(int i = 0;i<N;i++){
		for(int j = 0;j<M;j++){
	    	cout<<board[i][j];
	    }
	    cout<<endl;
	}
	cout<<"您的分数:"<<count<<endl;
}

//随机出现的豆子
void Food(){
	srand((unsigned int) time(NULL)); //做种子(程序运行时间);
    food_x = rand() % 18 + 1;
    food_y = rand() % 48 + 1;

    while(board[food_x][food_y] == 'o'){
        food_x = rand() % 18 + 1;
        food_y = rand() % 48 + 1;
    }

    board[food_x][food_y] = 'o';
}

//判断撞墙和吃到豆子
int Judge(){
	if(a == 0 || a == N-1 || b == 0 || b == M-1){
		board[a][b] = '#';
		return 0;
	}
	else if(a == food_x && b == food_y){
		board[a][b] = '#';
		count++;
		Food();
		return 1;
	}
	else{
		board[a][b] = '#';
		return 2;
	}
}

//控制吃豆人
void Move(int key){
	board[a][b] = ' ';
	switch(key){
		case 72: --a; break;
        case 80: ++a; break;
        case 75: --b; break;
        case 77: ++b; break;
	}
}



int main(){
	Fence();
	board[a][b] = '#';
	Food();
	Display();
	int key = getch();
	int res;
	
	while(1){
		while(!kbhit()){
			system("cls");
		    Move(key);
		    res = Judge();
		    if(res == 0)  break;
		    Display();
		}
		if(res == 0)  break;
		key = getch();
	}
	
	Display();
    cout<<"Game Over!"<<endl;
    cout<<"您的最终分数:"<<count<<endl;
	system("pause");
	return 0;
}

游戏界面:
在这里插入图片描述
在这里插入图片描述

发布了18 篇原创文章 · 获赞 82 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览