| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1815 人关注过本帖
标题:[有趣的代码]征求:贪食蛇混乱代码
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
结帖率:92.86%
收藏
 问题点数:0 回复次数:15 
[有趣的代码]征求:贪食蛇混乱代码
评分标准:

1。比代码长度.一个字符计 2 分

2。必须完成的功能:

              1.方向键控制蛇行方向
              2.随机布食
              3.吃食蛇长节
              4.蛇死法 除吃到自己必死,其它不作限制

3。加分(实际应是减分^_^)

              每增加一功能减去10分.比如:蛇身着色,食物闪亮等等





[如有不同意见,跟贴]
搜索更多相关主题的帖子: 代码 征求 功能 死法 评分 
2005-01-23 14:28
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
欺负我不会图形界面
2005-01-23 15:54
txbhj
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-12-19
收藏
得分:0 
这前面不是有人发过吗

我本菜鸟, 请多关照
2005-01-23 17:07
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 
我觉得这样计分不合理,完全不鼓励增加功能了么...
除非这个功能只多5个以内的字符...

Have you visit acm.tongji. lately?
2005-01-23 22:19
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
得分:0 
哈,没人愿意做马前卒了么,那可得有首先拿出代码被横在手术台上的勇气的丫

2005-01-23 22:45
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 
不要急啊,我只吧 switch (key) { case 'w':if (snake->y == 0)snake->y = HEIGHT-1;else snake->y --;break; case 'a':if (snake->x == 0)snake->x = WIDTH-1; else snake->x --;break; case 's':if (snake->y == HEIGHT-1)snake->y = 0;else snake->y ++;break; case 'd':if (snake->x == WIDTH-1) snake->x = 0;else snake->x ++;break; default: return 0; } 改成了: key=='w'&&(snake->y--||(snake->y+=HEIGHT))|| key=='a'&&(snake->x--||(snake->x+=WIDTH))|| key=='s'&&(++snake->y-HEIGHT||(snake->y=0))|| key=='d'&&(++snake->x-WIDTH||(snake->x=0)); 其他还没动呢...

Have you visit acm.tongji. lately?
2005-01-23 23:24
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 

就尽量不要太混乱的改了一下 #ifdef _WIN32 #define P Sleep #include <windows.h> #else #define P sleep #endif #define W 79 #define H 23

char M[H][W+1]; typedef struct n{int x,y;struct n*n;}n; n*S=0,b; int c,K;

w(x,y) // new node { n*t=malloc(sizeof(n)); return t->n=0,t->x=x,t->y=y,t; }

a(n**h) // snake add node { n*t=w((*h)->x,(*h)->y); t->n=*h,*h=t,c++,b.x=rand()%W,b.y=rand()%H; }

f(n**h) // free snake nodes { (*h)->n&&(f(&(*h)->n),0),free(*h),*h=0; }

m(n*t) // snake move { t->n&&(m(t->n),t->n->x=t->x,t->n->y=t->y); }

k(n**r) // check snake status { n*h=*r,*t=h->n; for(;t;t=t->n)if(!(t->x-h->x||t->y-h->y))return 0; h->x-b.x||h->y-b.y||a(r); return 1; }

i() // game init { S&&f(&S); S=w(W/2,H/2),a(&S),a(&S),a(&S),c=0,b.n=0,K='a'; }

p() // game print scene { int i; n*t; system("cls"),printf("%d\n",c),memset(M,' ',sizeof(M)); for(t=S;t;t=t->n)M[t->y][t->x]=48; M[b.y][b.x]='X'; for(i=0;i<H;i++)M[i][W]=0,puts(M[i]); }

s() // game step { return S&&(m(S),K=='w'&&(S->y--||(S->y+=H))||K=='a'&&(S->x--||(S->x+=W))|| K=='s'&&(++S->y-H||(S->y=0))||K=='d'&&(++S->x-W||(S->x=0)),1)?k(&S):0; }

int main() { do { for(i();s();)p(),P(c?600/(c+1)+100:500),kbhit()&&(K=getch()); printf("Game Over! You got %d point(S).\nContinue?(Y/N)\n",c),K=getch(); }while(K=='Y'||K=='y'); f(&S); return 0; } 改动了红色部分...

[此贴子已经被作者于2005-1-24 0:46:42编辑过]


Have you visit acm.tongji. lately?
2005-01-24 00:30
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 

直接压成一陀就是这样了: #ifdef _WIN32 #define P Sleep #include <windows.h> #else #define P sleep #endif #define W 79 #define H 23

char M[H][W+1];typedef struct n{int x,y;struct n*n;}n;n*S=0,b;int c,K;w(x,y){n*t =malloc(sizeof(n));return t->n=0,t->x=x,t->y=y,t;}a(n**h){n*t=w((*h)->x,(*h)->y) ;t->n=*h,*h=t,c++,b.x=rand()%W,b.y=rand()%H;}f(n**h){(*h)->n&&(f(&(*h)->n),0), free(*h),*h=0;}m(n*t){t->n&&(m(t->n),t->n->x=t->x,t->n->y=t->y);}k(n**r){n*h=*r, *t=h->n;for(;t;t=t->n)if(!(t->x-h->x||t->y-h->y))return 0;h->x-b.x||h->y-b.y||a( r);return 1;}i(){S&&f(&S);S=w(W/2,H/2),a(&S),a(&S),a(&S),c=0,b.n=0,K='a';}p(){ int i;n*t;system("cls"),printf("%d\n",c),memset(M,' ',sizeof(M));for(t=S;t;t=t-> n)M[t->y][t->x]=48;M[b.y][b.x]='X';for(i=0;i<H;i++)M[i][W]=0,puts(M[i]);}s(){ return S&&(m(S),K=='w'&&(S->y--||(S->y+=H))||K=='a'&&(S->x--||(S->x+=W))||K=='s' &&(++S->y-H||(S->y=0))||K=='d'&&(++S->x-W||(S->x=0)),1)?k(&S):0;}int main(){do{ for(i();s();)p(),P(c?600/(c+1)+100:500),kbhit()&&(K=getch());printf("Game Over!" "You got %d point(S).\nContinue?(Y/N)\n",c),K=getch();}while(K=='Y'||K=='y');f(& S);return 0;}

使用vc6.0编译通过 红色部分,第一次贴时搞错了。呵呵,用vc替换改名还是要小心的...

[此贴子已经被作者于2005-1-24 0:45:16编辑过]


Have you visit acm.tongji. lately?
2005-01-24 00:37
ajey2004
Rank: 1
等 级:新手上路
帖 子:164
专家分:0
注 册:2004-12-30
收藏
得分:0 
这有什么好比的啊

2005-01-24 11:56
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
那么,每个功能减去20分好了。

靠,近段时间老停电,说什么电力紧张,停一开二。等晚上我也缩一个

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-01-24 16:17
快速回复:[有趣的代码]征求:贪食蛇混乱代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026550 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved