问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

老师要求做c语言的游戏(类似贪吃蛇),我用的是vc++,graphics.h一直有问题,所以决定用opengl。

发布网友 发布时间:2022-05-01 00:22

我来回答

5个回答

热心网友 时间:2023-10-08 19:55

openGL绘图不知道,你可以把问题简单化,只要搞懂在任意像素点能画一个点,
写一个类似paint(int x, int y, int colour)函数,问题就都解决了。

画矩形无非就是两层for循环,调用画点的函数一个点一个点,画上去,里面for循环画一横行,然后外面for循环把坐标移到下一行。

擦除一个矩形,就是在那个矩形上重画一下背景色。

蛇移动,更简单,擦掉蛇尾矩形,在蛇前进方向上画一个矩形。两个步骤,视觉上就是蛇在移动。

定义一个游戏区域大小的二维数组, 利用数组的下标保存蛇的坐标点、边框坐标、和要吃的那个东西坐标。

每画一个蛇头,判断一下所在坐标,做相应处理,就OK了。追问我在文本模式下事实上已经做出贪吃蛇功能了,我只是想让它图形化

热心网友 时间:2023-10-08 19:56

#include<iostream.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#define N 21
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+2][N+2]={{0}};
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;i<N+2;i++)
{
for(j=0;j<N+2;j++)
{if(wall[i][j])cout<<"■";
else cout<<"□" ;
}cout<<endl;
}gotoxy(N+3,1);//显示信息
color(20);
cout<<"按 W S A D 移动方向"<<endl;
gotoxy(N+3,2);
color(20);
cout<<"按任意键暂停"<<endl;
gotoxy(N+3,3);
color(20);
cout<<"得分:"<<endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;i<len;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;i<len;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout<<"■"<<endl;
for(i=len-1;i>0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout<<"★"<<endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{case 'w':snake[0][1]--;break;
case 's':snake[0][1]++;break;
case 'a':snake[0][0]--;break;
case 'd':snake[0][0]++;break;
default: break;
}
gotoxy(snake[0][0],snake[0][1]);
color(14);
cout<<"★"<<endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
{score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout<<"●"<<endl;
gotoxy(N+5,3);
color(20);
cout<<score<<endl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout<<"失败!!!"<<endl;
for(i=0;i<len;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;}
希望给分追问编译有错误,而且没用图形库

追答不用的,你加我吧739319867QQ,可能你直接赋值黏贴会有问题的

热心网友 时间:2023-10-08 19:56

你不想深入学opengl,应该用Turbo C,graphics.h是他的扩展库,只有他会支持,而vc++ 的扩展库是针对c++ 的

热心网友 时间:2023-10-08 19:57

你可以下载一个easyx库 模拟graphics.h的

热心网友 时间:2023-10-08 19:57

你可以去C语言论坛里找,这种代码很容易找到的。追问那你帮我找出来啊,反正我是没找到

追答我泡C++的。。。。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我的《英雄传说:空之轨迹SC》中“艾尔贝周游道的通缉魔兽”不见... 空之轨迹sc 托兰特平原的通缉魔兽二号 我是2兆的宽带 原先的下载速度达到260KB/S 重装下系统最高还不到70K... 为什么两兆的线下载速度只有80KB/S 我们家宽带是网通的办理了2兆的可是下载速度70~90KB 原因 一九八三年大年三十是什么星座 请教1984年2月1日出生而且阴历生日正好是大年三十,请问我岁是多大 万岱鸿腾国际商贸有限公司送表真的吗 云南岱鸿商贸有限公司怎么样? 重庆鸿岱科技有限公司怎么样? 植物的吸收作用是怎么回事? 肠胃吸收功能是指的什么? 帮忙看一下代码C语言 &#47;* graphics.h Definitions for Graphics Package. Copyright (c) Borland Internatio 什么是药物的局部作用和吸收作用? (C&#47;C++) Eclipse (for C&#47;C++)中没有graphics.h头文件,应该怎么办? 什么是吸收作用和输导作用 C语言用graphics.h时怎么加加快贴图速度 c#中Graphics的具体解释。还有具体用法。 有谁知道怎样安装C语言中的graphics.h以及哪里可下载吗? 吸收作用是什么 C# Graphics的用法? 为什么出现这种情况了 C语言编程 graphics c语言中graphics.h头文件添加了怎么不起作用??? C语言 GRAPHICS库 C语言graphics.h 画图 CG都包括哪方面?除了动漫以外,动画和电影特效算不算?我想在北京进行一下系统的培训 CG是什么意思 菏泽2011年新录用的公务员,买房问题,能用公积金贷款吗?最多多少?谢谢! 这段夹杂利益的爱情,心力交瘁的我到底该怎么办?(一) 在阿迪官方网站买鞋,是否是真的. 大气对太阳辐射的削弱作用主要有什么三种方式 c语言程序设计的疑惑,找不到graphics.h 人体器官有吸收功能的是什么? 植物吸收作用的意义? 植物呼吸吸收的是什么 吸收党员的目的及作用是什么? 什么器官具有吸收食物营养的功能 我想查询超市某种产品的销量应该如何查询。 什么基本上没有吸收作用?胃只能吸收少量的什么? 什么叫做重吸收作用 肾小管的重吸收作用是什么??? 消化器官吸收的什么与呼吸管吸收的什么在人体中作用释放出生命活动所需要的能能量? 动植物的呼吸作用吸收什么释放什么 超市里查一个商品一年的销售怎么查 我想查询超市某种产品的销量应该如何查询? 万代官网旗舰店怎么查看产品销量 请问大连哪里有练习英语口语的好地方? 惠普envy13独显版怎么样 全新AMD处理器加持,惠普ENVY x360 13变形本评测 惠普ENVY 13-D024TU笔记本怎么样好不好