学习c语言编程怎么编游戏

只需一步,快速开始
后使用快捷导航没有帐号?
查看: 1906|回复: 17
想学C语言做游戏脱机WG,但越学越迷茫。请高人指教
累计签到:21 天连续签到:0 天
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
本帖最后由 wolaicici 于
05:10 编辑
因为以前玩游戏,特别喜欢脱机WG。
所以小生自学了半年的编程,把郝斌老师和小甲鱼老师的C语言视频都过了一遍(包括代码也敲了一遍)。
从网上了解到,制作游戏脱机WG需要很多很多的知识,不单单是C语言就能搞定的。
但现在真的越学学迷茫,没有一个学习游戏脱机WG的流程和时间表,不知道该学些什么和怎样地学习。
小生不怕吃苦,只是没有方向。
如果能有高人大侠来指点一二的话,真是感激不尽。在此先谢谢
备注:很羡慕会写传奇私服脱机WG的人,我真的很想很想学习。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:43 天连续签到:0 天
闲来无事、上鱼C逛逛、发现了LZ一枚、我特羡慕你们这些不用睡觉的人。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:355 天连续签到:1 天
脱机WG要求高,必须懂网络编程,你得很熟悉网络协议,然后分析某个游戏的数据包,再修改网络封包再发给服务器。光用C编写WG不行,起码你还得会C++或者Delphi、做WG最多的E语言,适合新手,但是E无法编写驱动过游戏保护。
VC++传奇三逆向研究三部曲介绍的很详细哈。楼主自己可以去看看。
PS:&&做WG没前途,学好编程才是王道。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:397 天连续签到:1 天
总之,一句话,工作和爱好都是一样的,很少的,可以工作之余去学习WG,现在的游戏客户端慢慢的都加了驱动保护了,你不过驱动保护,连OD,CE都不让你用的,无法调试的,就更别谈WG了,C,C++,汇编,驱动,这些都必须要会的,WG,这个注定是没人完完全全的清清楚楚的交给你的,自己去找各种资料吧!WG,不是简单的兴趣爱好,就能掌握的!
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:345 天连续签到:1 天
又是一个为了兴趣而学习编程的人,和我一样。
你C学得怎么样了呢?如果学得有点门道就有点基础了,接下来学习C++吧,(其间可以应该学习一下汇编,不求精通,但最起码知道汇编语法),可以用C++先从简单的WG做起,如加血啊,走路啊,然后打怪啊,PK啊,有了水平后再做脱机。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:674 天连续签到:1 天
我发现想学编WG的人很多,可是我认为这是一条不归路,要学的东东太多,不是一个新人能做得了的,慢慢学吧,
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:697 天连续签到:1 天
福禄娃娃 发表于
脱机WG要求高,必须懂网络编程,你得很熟悉网络协议,然后分析某个游戏的数据包,再修改网络封包再发给服务 ...
WG始终都是玩弄别人的工具,出个问题,自己就不知道了。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:355 天连续签到:1 天
空手套小白狼 发表于
WG始终都是玩弄别人的工具,出个问题,自己就不知道了。
所以写WG累啊,得时刻跟着游戏公司的节奏走,游戏一更新,WG也得更新。
编程才是王道
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:697 天连续签到:1 天
福禄娃娃 发表于
所以写WG累啊,得时刻跟着游戏公司的节奏走,游戏一更新,WG也得更新。
编程才是王道
大型的游戏,一般客户端都不会发生低级的逻辑错误,数据验证,全部都在服务器,写WG前提都要懂C++,3D,服务器
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:355 天连续签到:1 天
空手套小白狼 发表于
大型的游戏,一般客户端都不会发生低级的逻辑错误,数据验证,全部都在服务器,写WG前提都要懂C++,3D,服 ...
O(∩_∩)O~,没做过WG,只是了解一些皮毛。听你这么一说豁然开朗。3D指的是游戏编程吧,我觉得做WG的人应该自己也去学学游戏编程,熟悉游戏的逻辑。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:1350 天连续签到:1 天
不懂,WG是一个很远大的理想。如果你很想编写WG的话就要付出比别人多得多得努力,这样的话这条路只能一个人一直走到黑。加油吧。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:21 天连续签到:0 天
多谢各位的指教。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:148 天连续签到:0 天
WG是什么?
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:460 天连续签到:1 天
怡静 发表于
我发现想学编WG的人很多,可是我认为这是一条不归路,要学的东东太多,不是一个新人能做得了的,慢慢学吧,
非常赞同&&光一个内存挂 都涉及很多 在想想脱机的
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:154 天连续签到:1 天
笨笨熊 发表于
总之,一句话,工作和爱好都是一样的,很少的,可以工作之余去学习WG,现在的游戏客户端慢慢的都加了驱动保 ...
说的好呀~~~~~~~~~~~~~~
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:764 天连续签到:1 天
想做WG 需要学的东西非常多 我只想说踏踏实实学下去 等你的等级达到一定高度的时候 很多东西就自然明白了
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:1 天连续签到:0 天
脱机WG相当困难,先学做WG倒是可以,但仅仅C语言不够,建议先学好C,然后windows程序设计,当然,还有汇编,做单机游戏简单,可是网游的WG,得会动态调试,用OD,CE之类的配合,现在的游戏,光是过游戏保护就是一道很难迈过的坎。
我自己玩的游戏,我做了一个WG,稳定用了大概几个月了。。功能实现很简单,主要就是过游戏保护机制。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
累计签到:1 天连续签到:0 天
你要做脱机的,就更困难了,首先得把游戏的协议分析清楚,然后各种模拟。。
如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
•••(
Powered by如何用C语言编写图形游戏?
如何用C语言编写图形游戏?
09-10-04 &C语言游戏编程_C语言_最全面的网站教程
首页 上一页 01 下一页 尾页 &&转到第1页Posts - 90,
Articles - 0,
Comments - 517
求真、务实。
00:33 by wid, ... 阅读,
C 语言 win32 游戏编程 - 贪吃蛇
游戏主界面:
第一关运行截图:
游戏使用 C语言 + Windows API 实现, 没有使用第三方图形库, 共 10 关, 每关有不同的地图, 进入下一关时蛇身长度不会减少, 10关以后为无尽模式。
  编程语言: C 语言
  开发环境: Microsoft Visual C++ 6.0
  图形库支持: Windows API
  运行平台: Windows
  开源协议: GNU GPL v3
  项目托管: Github
  Github 项目地址:
  游戏下载:
  源码下载:
  方向移动: W、S、A、D 或 方向键 上下左右
  加速移动: Ctrl 键 ( 左右Ctrl均可 )
--------------------基于C语言实现的贪吃蛇游戏完整实例代码
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了基于C语言实现的贪吃蛇游戏完整实例代码,对于学习游戏开发的朋友有一定的借鉴价值,需要的朋友可以参考下
本文以实例的形式讲述了基于C语言实现的贪吃蛇游戏代码,这是一个比较常见的游戏,代码备有比较详细的注释,对于读者理解有一定的帮助。
贪吃蛇完整实现代码如下:
#include &graphics.h&
#include &conio.h&
#include &stdlib.h&
#include &dos.h&
#define NULL 0
#define UP
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
#define ESC
#define ENTER 7181
struct snake
struct snake *
struct snake *
int grade=60;
/*控制速度的*******/
/* 背静遮的 位置*/
void *far1,*far2,*far3,*far4;
/* 蛇身指针 背静遮的指针 虫子*/
int size1,size2,size3,size4;
/* **全局变量**/
int ch=RIGHT;
/**************存按键 开始蛇的方向为RIGHT***********/
int chy=RIGHT;
int flag=0;
/*********判断是否退出游戏**************/
int control=4;
/***********判断上次方向和下次方向不冲突***/
int nextshow=1;
/*******控制下次蛇身是否显示***************/
/***************随即矩形中心坐标***************/
/*******在a b 未改变前 得到他们的值 保证随机矩形也不在此出现*******/
/************************蛇身初始化**************************/
void snakede()
struct snake *p1,*p2;
head=p1=p2=(struct snake *)malloc(sizeof(struct snake));
p1-&centerx=80;
p1-&newx=80;
p1-&centery=58;
p1-&newy=58;
p1=(struct snake *)malloc(sizeof(struct snake));
p2-&next=p1;
p1-&centerx=58;
p1-&newx=58;
p1-&centery=58;
p1-&newy=58;
p1-&next=NULL;
/*******************end*******************/
void welcome()
/*************游戏开始界面 ,可以选择 速度**********/
int x=240;
int y=300;
setfillstyle(SOLID_FILL,BLUE);
bar(98,100,112,125);
setfillstyle(SOLID_FILL,RED);
bar(98,112,112,114);
setfillstyle(SOLID_FILL,GREEN);
bar(100,100,110,125);
size=imagesize(98,100,112,125);
buf=malloc(size);
getimage(98,100,112,125,buf);
cleardevice();
setfillstyle(SOLID_FILL,BLUE);
bar(240,300,390,325);
outtextxy(193,310,"speed:");
setfillstyle(SOLID_FILL,RED);
bar(240,312,390,314);
setcolor(YELLOW);
outtextxy(240,330,"DOWN");
outtextxy(390,330,"UP");
outtextxy(240,360,"ENTER to start..." );
outtextxy(270,200,"SNAKE");
fei(220,220);
feiyang(280,220);
yang(340,220);
putimage(x,y,buf,COPY_PUT);
setcolor(RED);
rectangle(170,190,410,410);
{ if(bioskey(1))
/********8选择速度部分************/
key=bioskey(0);
switch(key)
case ENTER:
case DOWN:
if(x&=240)
{ putimage(x-=2,y,buf,COPY_PUT);
if(x&=375)
{ putimage(x+=2,y,buf,COPY_PUT);
/********** end
****************/
free(buf);
/*************************随即矩形*****************/
/***********当nextshow 为1的时候才调用此函数**********/
void ran()
/**********控制是否显示***********/
int jump=0;
struct snake *p;
if(nextshow==1)
/***********是否开始随机产生***************/
randomize();
nx=random(14);
ny=random(14);
scenterx=nx*22+58;
scentery=ny*22+58;
while(p!=NULL)
if(scenterx==p-&centerx&&scentery==p-&centery||scenterx==sx&&scentery==sy)
if(jump==1)
if(show==1)
{putimage(scenterx-11,scentery-11,far3,COPY_PUT);
nextshow=0;
/***********过关动画**************/
void donghua()
cleardevice();
setbkcolor(BLACK);
randomize();
{for(i=0;i&=5;i++)
{putpixel(random(640),random(80),13);
putpixel(random(640),random(80)+80,2);
putpixel(random(640),random(80)+160,3);
putpixel(random(640),random(80)+240,4);
putpixel(random(640),random(80)+320,1);
putpixel(random(640),random(80)+400,14);
setcolor(YELLOW);
settextstyle(0,0,4);
outtextxy(130,200,"Wonderful!!");
setfillstyle(SOLID_FILL,10);
bar(240,398,375,420);
feiyang(300,400);
fei(250,400);
yang(350,400);
if(bioskey(1))
if(bioskey(0)==ESC)
/*************************end************************/
/***********************初始化图形系统*********************/
void init()
{int a=DETECT,b;
initgraph(&a,&b,"");
/***************************end****************************/
/***画立体边框效果函数******/
void tline(int x1,int y1,int x2,int y2,int white,int black)
{ setcolor(white);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(black);
line(x2,y1,x2,y2);
line(x1,y2,x2,y2);
/****end*********/
/*************飞洋标志**********/
int feiyang(int x,int y)
{int feiyang[18][18]={ {0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0},
{0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0},
{0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
{0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,1,1,1,1,1,0,0,1,0,0,1,1,0,0,0,0},
{0,0,1,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0},
{0,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0},
{0,0,0,1,1,1,0,1,1,1,1,1,0,0,1,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}};
for(i=0;i&=17;i++)
for(j=0;j&=17;j++)
{if (feiyang[i][j]==1)
putpixel(j+x,i+y,RED);
/********"飞"字*************/
int fei(int x,int y)
{int fei[18][18]={{1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0}};
for(i=0;i&=17;i++)
for(j=0;j&=17;j++)
{if (fei[i][j]==1)
putpixel(j+x,i+y,BLUE);
/*********"洋"字**************/
int yang(int x,int y)
int yang[18][18]={{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
{1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0},
{0,1,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0},
{0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
{0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0},
{0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0},
{0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0},
{0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}};
for(i=0;i&=17;i++)
for(j=0;j&=17;j++)
{if (yang[i][j]==1)
putpixel(j+x,i+y,BLUE);
/******************主场景**********************/
int bort()
setfillstyle(SOLID_FILL,15);
bar(49,49,71,71);
setfillstyle(SOLID_FILL,BLUE);
bar(50,50,70,70);
size1=imagesize(49,49,71,71);
far1=(void *)malloc(size1);
getimage(49,49,71,71,far1);
cleardevice();
setfillstyle(SOLID_FILL,12);
bar(49,49,71,71);
size2=imagesize(49,49,71,71);
far2=(void *)malloc(size2);
getimage(49,49,71,71,far2);
setfillstyle(SOLID_FILL,12);
bar(49,49,71,71);
setfillstyle(SOLID_FILL,GREEN);
bar(50,50,70,70);
size3=imagesize(49,49,71,71);
far3=(void *)malloc(size3);
getimage(49,49,71,71,far3);
cleardevice();
/*取蛇身节点
背景节点 虫子节点end*/
setbkcolor(8);
setfillstyle(SOLID_FILL,GREEN);
bar(21,23,600,450);
tline(21,23,600,450,15,8);
/***开始游戏场景边框 立体效果*******/
tline(23,25,598,448,15,8);
tline(45,45,379,379,8,15);
tline(43,43,381,381,8,15);
tline(390,43,580,430,8,15);
tline(392,45,578,428,8,15);
tline(412,65,462,85,15,8);
tline(410,63,464,87,15,8);
tline(410,92,555,390,15,8);
tline(412,94,553,388,15,8);
tline(431,397,540,420,15,8);
tline(429,395,542,422,15,8);
tline(46,386,377,428,8,15);
tline(44,384,379,430,8,15);
setcolor(8);
outtextxy(429,109,"press ENTER ");
outtextxy(429,129,"---to start");
/*键盘控制说明*/
outtextxy(429,169,"press ESC ");
outtextxy(429,189,"---to quiet");
outtextxy(469,249,"UP");
outtextxy(429,289,"LEFT");
outtextxy(465,329,"DOWN");
outtextxy(509,289,"RIGHT");
setcolor(15);
outtextxy(425,105,"press ENTER ");
outtextxy(425,125,"---to start");
outtextxy(425,165,"press ESC ");
outtextxy(425,185,"---to quiet");
outtextxy(465,245,"UP");
outtextxy(425,285,"LEFT");
outtextxy(461,325,"DOWN");
outtextxy(505,285,"RIGHT");
/*******end*************/
setcolor(8);
outtextxy(411,52,"score");
outtextxy(514,52,"left");
setcolor(15);
outtextxy(407,48,"score");
outtextxy(510,48,"left");
size4=imagesize(409,62,465,88);
/****分数框放到内存********/
far4=(void *)malloc(size4);
getimage(409,62,465,88,far4);
putimage(500,62,far4,COPY_PUT);
/*******输出生命框***********/
setfillstyle(SOLID_FILL,12);
setcolor(RED);
outtextxy(415,70,"0");
/***************输入分数为零**********/
outtextxy(512,70,"20");
/*************显示还要吃 的虫子的数目*********/
bar(46,46,378,378);
feiyang(475,400);
fei(450,400);
yang(500,400);
outtextxy(58,390,"mailto:");
outtextxy(58,410,"snake game");
outtextxy(200,410,"made by yefeng");
{ if(bioskey(1))
a=bioskey(0);
if(a==ENTER)
/******************gameover()******************/
void gameover()
{ char *p="GAME OVER";
setcolor(YELLOW);
settextstyle(0,0,6);
outtextxy(100,200,p);
{if(bioskey(1))
cha=bioskey(0);
if(cha==ESC)
/***********显示蛇身**********************/
void snakepaint()
{struct snake *p1;
putimage(a-11,b-11,far2,COPY_PUT);
while(p1!=NULL)
{putimage(p1-&newx-11,p1-&newy-11,far1,COPY_PUT);
/****************end**********************/
/*********************蛇身刷新变化 游戏关键部分 *******************/
void snakechange()
{struct snake *p1,*p2,*p3,*p4,*p5;
static int n=0;
static int left=20;
char sscore[5];
char sleft[1];
while(p1!=NULL)
if(p1-&next==NULL)
/************记录最后节点的坐标************/
p1-&newx=p2-&
p1-&newy=p2-&
while(p1!=NULL)
{p1-&centerx=p1-&
p1-&centery=p1-&
/********判断按键方向*******/
if(bioskey(1))
{ ch=bioskey(0);
if(ch!=RIGHT&&ch!=LEFT&&ch!=UP&&ch!=DOWN&&ch!=ESC)
/********chy为上一次的方向*********/
switch(ch)
case LEFT: if(control!=4)
{head-&newx=head-&newx-22;
head-&centerx=head-&
control=2;
if(head-&newx&47)
gameover();
{ head-&newx=head-&newx+22;
head-&centerx=head-&
control=4;
if(head-&newx&377)
gameover();
case DOWN:
if(control!=1)
{ head-&newy=head-&newy+22;
head-&centery=head-&
control=3;
if(head-&newy&377)
gameover();
{ head-&newy=head-&newy-22;
head-&centery=head-&
control=1;
if(head-&newy&47)
gameover();
case RIGHT: if(control!=2)
{ head-&newx=head-&newx+22;
head-&centerx=head-&
control=4;
if(head-&newx&377)
gameover();
{ head-&newx=head-&newx-22;
head-&centerx=head-&
control=2;
if(head-&newx&47)
gameover();
case UP: if(control!=3)
{ head-&newy=head-&newy-22;
head-&centery=head-&
control=1;
if(head-&newy&47)
gameover();
{ head-&newy=head-&newy+22;
head-&centery=head-&
control=3;
if(head-&newy&377)
gameover();
/* if 判断是否吃蛇*/
if(flag!=1)
{ if(head-&newx==scenterx&&head-&newy==scentery)
while(p3!=NULL)
p3=(struct snake *)malloc(sizeof(struct snake));
p4-&next=p3;
p3-&centerx=a;
p3-&newx=a;
p3-&centery=b;
p3-&newy=b;
p3-&next=NULL;
putimage(409,62,far4,COPY_PUT);
/********** 分数框挡住**************/
putimage(500,62,far4,COPY_PUT);
/*********把以前的剩下虫子的框挡住********/
score=(++n)*100;
itoa(score,sscore,10);
itoa(left,sleft,10);
setcolor(RED);
outtextxy(415,70,sscore);
outtextxy(512,70,sleft);
nextshow=1;
if(left==0)
/************判断是否过关**********/
donghua();
/*******如果过关,播放过关动画*********************/
/*********************判断是否自杀***************************/
/****从第五个节点判断是否自杀************/
while(p5!=NULL)
{if(head-&newx==p5-&centerx&&head-&newy==p5-&centery)
{ gameover();
/************snakechange()函数结束*******************/
/*****************************主函数******************************************/
int main()
/**********初始化图形系统**********/
welcome();
/*********8欢迎界面**************/
/*********主场景***************/
snakede();
/**********连表初始化**********/
{ snakechange();
if(flag==1)
snakepaint();
for(i=0;i&=i++)
delay(3000);
free(far1);
free(far2);
free(far3);
free(far4);
closegraph();
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 学c语言 的文章

 

随机推荐