贪食蛇

本文介绍了一个使用C++在Windows控制台环境下实现的简单游戏。游戏通过随机生成食物的位置来增加趣味性,并利用方向键控制角色移动。此外,文章还展示了如何使用Windows API进行光标的定位以及如何创建游戏边界。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
using namespace std;

/****全局变量表示食物*****/
int a,b;
void gotoxy(int x,int y)
{
    HANDLE hout;
    COORD coord;
    coord.X=x;
    coord.Y=y;
    hout=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(hout,coord);
}

void food()
{
    srand( (unsigned)time(NULL) );       /// 截取毫秒
    a=rand()%50 + 1; ///随机生成 x
    b=rand()%28 + 1;///随机生成 y
    gotoxy(a,b);
    cout<<char(12);
}
void f(int n)///打印字符
{
    cout<< (char)n;
}
void ShowMain()///函数功能打印边框
{
      system("color 24");
      /***
    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色
    ***/
    for( int i=0; i<=50; i++) ///上边的
    {
        gotoxy(i,0);
        f(12);
    }
    for(int i=0; i<=30; i++) ///右边的
    {
        gotoxy(60,i);
        f(12);
    }
    for(int i=0; i<=50; i++) ///下面的
    {
        gotoxy(i,30);
        f(12);
    }
    for(int i=0; i<=30; i++) ///左边的
    {
        gotoxy(0,i);
        f(12);
    }
    gotoxy(10+2,29);
    cout<<"山东理工大学计算机科学与技术学院软件1603 赵德锋\n";
}
void judge(int ch ,int *x,int *y)
{
    switch(ch)
    {
    case 72:///上
        (*y)--;
        break;
    case 'w':///上
        (*y)--;
        break;
    case 'W':///上
        (*y)--;
        break;
    case 75:///左
        (*x)--;
        break;
    case 'a':///左
        (*x)--;
        break;
    case 'A':///左
        (*x)--;
        break;
    case 77:///右
        (*x)++;
        break;
    case 'd':///右
        (*x)++;
        break;
    case 'D':///右
        (*x)++;
        break;
    case 80:///下
        (*y)++;
    case 's':///下
        (*y)++;
    case 'S':///下
        (*y)++;
        break;
    }
}
int main()
{
    ShowMain();///显示主页面
    gotoxy(5,5);///设置 (5,5)为默认开始位置
    f(12);
    int x=5;
    int y=5;
    food();///函数功能随机生成 食物
    int sum=0;///积分;
    while(1)
    {
        int ch=getch();///读入用户的方向
        gotoxy(x,y);
        f(' ');
        judge(ch,&x,&y);///判读用户输入的方向
        gotoxy(x,y);
        f(12);
        if(x<=0 || x>=59 || y<=0 || y>=30)
        {
            gotoxy(25,15);
            cout<<"GAME OVER\n";
            cout<<"恭喜您的分数是"<<sum<<"分";
            system("pause");
            break;
        }
        if(x==a && b==y)
        {
            sum+=10;
            food();///在生成一个食物
        }
    }
    system("cls");
    cout<<"您是否要继续游戏(1/0)"<<endl;
    int choose;
    cin>>choose;
    if(choose==1)
    ShellExecute(NULL, "open", "http://www.4399.com/flash/186083_1.htm", NULL, NULL, SW_MINIMIZE);///打开特定网站
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值