中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 改写了小C游戏,,欢迎各位老兄见笑一下..
English/Chinese Fix Translation
作者:
标题: 改写了小C游戏,,欢迎各位老兄见笑一下.. 上一主题 | 下一主题
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『楼 主』:  改写了小C游戏,,欢迎各位老兄见笑一下.. 使用 LLM 解释/回答一下

我刚较大的改写完善了书上的一个小C游戏,原来的赛车只能向左或向右,不能前进和后退,而且过路车只有一辆卡车,只有一种颜色,很单调,我增加了赛车的前进和后退,又加了一辆小货车,并加了里程显示和选择游戏难度的菜单,还使过路车的色彩五彩缤纷, 并且,如果赛车从左右两侧撞上过路车,也能反映失败.相比之下,原来的撞车就很单一了,..
希望大家有时间玩一玩,,,如果美工好的,也可自己改成逼真的车型...
另,也准备好了能独立运行的可执行程序,双击就可玩的...
不过很遗憾只有PC SPEAKER ,还没有音乐..谁会的能不能补充进去?
打开附件
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <bios.h>
#include <string.h>
#include <ctype.h>

#define BORDER 1
#define ESC 27
#define REV_VID 0x1e
#define NORM_VID 0x40

void light(void);
void chineseputs(int x, int y, char *p, int attrib);
void display_menu(char *menu, int x, int y, int count);
void disp_box(int x1, int y1, int x2, int y2, int attrib);
int get_resp(int x, int y, int count, char *menu, char *keys);
int popup(char *menu, char *keys, int count, int x, int y, int border);
void goto_xy(int x, int y);
int coustomize();
main()
{
int gdriver,gmode,c,d,e,b,i,l,j,k,u,w,course,s,h,bcolor,scolor,pcolor,ccolor,time;
int *p={400,40,310,200,610,140};
int poly;
char speed;
char *main_menu={".h...(high)",".a...(average)",".l...(low)",".c...(coustomize)"};

c=1;d=0;u=0;
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&amp;gdriver,&amp;gmode,""<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setwritemode(XOR_PUT);
setfillstyle(HATCH_FILL,4);
drawpoly(4,p);
line(380,50,600,160);
setcolor(14);
setbkcolor(0);
settextstyle(GOTHIC_FONT,HORIZ_DIR,6);
outtextxy(350,70,"JUST START MY COURSE !!"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setcolor(5);
settextstyle(TRIPLEX_FONT,VERT_DIR,8);
outtextxy(550,120,"Our goal is just waiting for your hands !"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setcolor(8);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
outtextxy(80,400,"Written by Dai ..."<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
getch();
closegraph();
speed=popup(main_menu, "halc", 4, 5, 16, BORDER);
if(speed==0) time=400;
if(speed==1) time=1000;
if(speed==2) time=1500;
if(speed==3) time=coustomize();
if(speed==5) exit (0);
initgraph(&amp;gdriver,&amp;gmode,""<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setwritemode(XOR_PUT);
setcolor(YELLOW);
outtextxy(250,350,"Are you ready?"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
while(kbhit()==0); /* getch() will eat the previous ENTER so it is not used */
cleardevice();
light();
setcolor(15);
for(h=0;h&lt;4;h++)
line(150+h*100,0,150+h*100,472);
for(h=0;h&lt;3;h++)
{
setlinestyle(3,0,1);
line(200+h*100,0,200+h*100,472);
settextstyle(1,HORIZ_DIR,3);
}
settextstyle(1,HORIZ_DIR,4);
setcolor(RED);
outtextxy(40,40,"Just do it !"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
outtextxy(40,80,"Yeah !!"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setcolor(10);
setlinestyle(SOLID_LINE,0,3);
rectangle(150,400,450,460);
outtextxy(160,410,"Ready,Begin!"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
setcolor(BLUE);
rectangle(180+c*100,400,220+c*100,440);
rectangle(170+c*100,390,230+c*100,400);
rectangle(190+c*100,370,210+c*100,390);
rectangle(170+c*100,440,230+c*100,450);
setcolor(5);
line(190+c*100,400,190+c*100,440);
line(200+c*100,400,200+c*100,440);
line(210+c*100,400,210+c*100,440);
line(200+c*100,350,200+c*100,370);
line(185+c*100,350,215+c*100,350);

course=0;
w=-50;
loop:
bcolor=rand()%15,scolor=rand()%15,pcolor=rand()%15,ccolor=rand()%15,i=rand()%3,l=rand()%3;
if(w&gt;=800) w=-50;
for(j=-20;j&lt;=90;j++,w++)
{
setcolor(bcolor+1);
rectangle(170+i*100,j*10,230+i*100,60+j*10);
rectangle(160+i*100,70+j*10,240+i*100,260+j*10);
line(180+i*100,70+j*10,180+i*100,260+j*10);
line(200+i*100,70+j*10,200+i*100,260+j*10);
line(220+i*100,70+j*10,220+i*100,260+j*10);
if(j&gt;=20)
{
k=j-35;
setcolor(scolor+1);
rectangle(170+l*100,k*10,230+l*100,60+k*10);
}
setcolor(10);

line(85,-5+u*15+w,85,55+u*15+w);
line(95,-5+u*15+w,95,55+u*15+w);
line(105,-5+u*15+w,105,55+u*15+w);
line(115,-5+u*15+w,115,55+u*15+w);
line(75,11+u*15+w,75,39+u*15+w);
line(125,11+u*15+w,125,39+u*15+w);
setcolor(pcolor+1);
poly = 530;
poly = u*15+j*30;
poly =515;
poly = 25+u*15+j*30;
poly =485;
poly =25+u*15+j*30 ;
poly =470;
poly =u*15+j*30 ;
poly =485;
poly =-25+u*15+j*30;
poly =515;
poly =-25+u*15+j*30 ;
poly = poly;
poly = poly;
drawpoly(7,poly);


delay(time);
setcolor(bcolor+1);
rectangle(170+i*100,j*10,230+i*100,60+j*10);
rectangle(160+i*100,70+j*10,240+i*100,260+j*10);
line(180+i*100,70+j*10,180+i*100,260+j*10);
line(200+i*100,70+j*10,200+i*100,260+j*10);
line(220+i*100,70+j*10,220+i*100,260+j*10);
if(j&gt;=20)
{
setcolor(scolor+1);
rectangle(170+l*100,k*10,230+l*100,60+k*10);
}
setcolor(10);

line(85,-5+u*15+w,85,55+u*15+w);
line(95,-5+u*15+w,95,55+u*15+w);
line(105,-5+u*15+w,105,55+u*15+w);
line(115,-5+u*15+w,115,55+u*15+w);
line(75,11+u*15+w,75,39+u*15+w);
line(125,11+u*15+w,125,39+u*15+w);
setcolor(pcolor+1);
poly = 530;
poly = u*15+j*30;
poly =515;
poly = 25+u*15+j*30;
poly =485;
poly =25+u*15+j*30 ;
poly =470;
poly =u*15+j*30 ;
poly =485;
poly =-25+u*15+j*30;
poly =515;
poly =-25+u*15+j*30 ;
poly = poly;
poly = poly;
drawpoly(7,poly);

sound(j*10);
delay(50);
nosound();
course++;
setcolor(ccolor+1);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
outtextxy(580,390,"10000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=1000) outtextxy(580,50,"1000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=1500) outtextxy(580,70,"1500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=2000) outtextxy(580,90,"2000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=2500) outtextxy(580,110,"2500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=3000) outtextxy(580,130,"3000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=3500) outtextxy(580,150,"3500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=4000) outtextxy(580,170,"4000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=4500) outtextxy(580,190,"4500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=5000) outtextxy(580,210,"5000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=5500) outtextxy(580,230,"5500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=6000) outtextxy(580,250,"6000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=6500) outtextxy(580,270,"6500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=7000) outtextxy(580,290,"7000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=7500) outtextxy(580,310,"7500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=8000) outtextxy(580,330,"8000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=8500) outtextxy(580,350,"8500"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=9000) outtextxy(580,370,"9000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=10000) outtextxy(580,390,"10000"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
if(course&gt;=10000)
{
sound(800);
delay(1000);
nosound();
closegraph();
window(10,5,60,10);
textbackground(RED);
textcolor(YELLOW);
cprintf("\n\rYou are EXCELLENT !\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
cprintf(" You have WON !\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
cprintf(" The mileage you have covered\n\ris:"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
textcolor(BLUE);
cprintf("%d",course);
getch();
getch();
exit (0);
}
if(bioskey(1)!=0)
{ b=bioskey(0);
setcolor(BLUE);
rectangle(180+c*100,400-d*10,220+c*100,440-d*10);
rectangle(170+c*100,390-d*10,230+c*100,400-d*10);
rectangle(190+c*100,370-d*10,210+c*100,390-d*10);
rectangle(170+c*100,440-d*10,230+c*100,450-d*10);
setcolor(5);
line(190+c*100,400-d*10,190+c*100,440-d*10);
line(200+c*100,400-d*10,200+c*100,440-d*10);
line(210+c*100,400-d*10,210+c*100,440-d*10);
line(200+c*100,350-d*10,200+c*100,370-d*10);
line(185+c*100,350-d*10,215+c*100,350-d*10);
if((b==0x4b00)&amp;&amp;(c&gt;0))
c--;
else if((b==0x4d00)&amp;&amp;(c&lt;2))
c++;
else if(b==0x4800)
d++;
else if(b==0x5000)
d--;
setcolor(BLUE);
setcolor(BLUE);
rectangle(180+c*100,400-d*10,220+c*100,440-d*10);
rectangle(170+c*100,390-d*10,230+c*100,400-d*10);
rectangle(190+c*100,370-d*10,210+c*100,390-d*10);
rectangle(170+c*100,440-d*10,230+c*100,450-d*10);
setcolor(5);
line(190+c*100,400-d*10,190+c*100,440-d*10);
line(200+c*100,400-d*10,200+c*100,440-d*10);
line(210+c*100,400-d*10,210+c*100,440-d*10);
line(200+c*100,350-d*10,200+c*100,370-d*10);
line(185+c*100,350-d*10,215+c*100,350-d*10);
}
/*if(course&gt;=1)
{ */
if(((c==i)&amp;&amp;(j&gt;=9-d&amp;&amp;j&lt;=45-d))||((c==l)&amp;&amp;(k&gt;=29-d&amp;&amp;k&lt;=45-d)))

{
for(i=0;i&lt;2000;i++)
{
sound(1500);
delay(10);
nosound();
}
closegraph();
window(35,18,75,23);
textbackground(WHITE);
textcolor(DARKGRAY);
cprintf("\n\r You made a car ACCIDENT !\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
cprintf(" You have LOST !\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
cprintf("The mileage you have covered\n\ris:"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
textcolor(MAGENTA);
cprintf("%d",course);
goon:
while(bioskey(1)==0);
if(bioskey(0)==0x1c0d) /* or if((char)bioskey(0)==13) */
/*getch();
getch();*/
exit (0);
goto goon;
}
/* if
{
cleardevice();
outtextxy(200,100,"You made a car ACCIDENT !"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
outtextxy(280,120," You have LOST !"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
getch();
closegraph();
exit;
}*/
/* }*/
}
goto loop;
}

void goto_xy(int x, int y)
{
union REGS regs;
regs.h.ah=2;
regs.h.dl=y;
regs.h.dh=x;
regs.h.bh=0;
int86(0x10, &amp;regs, &amp;regs);
}
void display_menu(char *menu, int x, int y, int count)
{
register int i;
for(i=0;i&lt;count;i++,x++)
{
goto_xy(x, y);
cprintf(menu);
}
}

void disp_box(int x1, int y1, int x2, int y2, int attrib)
{
unsigned char *boxchar={"H","H","H","H","H","H"};
register int i;
for(i=x1;i&lt;=x2;i++)
{
chineseputs(i, y1, boxchar,attrib);
chineseputs(i, y2, boxchar,attrib);
}
for(i=y1;i&lt;=y2;i++)
{
chineseputs(x1, i, boxchar,attrib);
chineseputs(x2, i, boxchar,attrib);
}
chineseputs(x1, y1, boxchar,attrib);
chineseputs(x2, y1, boxchar,attrib);
chineseputs(x2, y2, boxchar,attrib);
chineseputs(x1, y2, boxchar,attrib);
}
void chineseputs(int x, int y, char *p, int attrib)
{
union REGS r;
while(*p)
{
r.h.ah=2;
r.h.dl=x++;
r.h.dh=y;
int86(0x10, &amp;r, &amp;r);
r.h.ah=9;
r.h.bh=0;
r.x.cx=1;
r.h.al=*p++;
r.h.bl=attrib;
int86(0x10, &amp;r, &amp;r);
}
}
int get_resp(int x, int y, int count, char *menu, char *keys)
{
union inkey
{
char ch;
int i;
}c;
int arrow_choice=0, key_choice;
y++;
goto_xy(x, y);
chineseputs(y, x, menu, REV_VID);
for(;<img src="images/smilies/face-wink.png" align="absmiddle" border="0">
{
while(!bioskey(1));
c.i=bioskey(0);
goto_xy(x+arrow_choice, y);
chineseputs(y, x+arrow_choice, menu, NORM_VID);
if(c.ch)
{
key_choice=is_in(keys, tolower(c.ch));
if(key_choice) return key_choice-1;
switch(c.ch)
{
case '\r': return arrow_choice;
case ' ': arrow_choice++;
break;
case ESC: return 5;
}
}
else
{
switch(c.ch)
{
case 72: arrow_choice--;
break;
case 80: arrow_choice++;
break;
}
}
if(arrow_choice==count) arrow_choice=0;
if(arrow_choice&lt;0) arrow_choice=count-1;
goto_xy(x+arrow_choice, y);
chineseputs(y, x+arrow_choice, menu, REV_VID);
}
}
int is_in(char *s, char c)
{
register int i;
for(i=0;*s;i++)
if(*s++==c) return i+1;
return 0;
}
int popup(char *menu, char *keys, int count, int x, int y, int border)
{
register int i, len;
int endx, endy, choice;
unsigned *p;
if((x&gt;24)||(x&lt;0)||(y&gt;79)||(y&lt;0))
{
printf("range error"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
return -2;
}
len=10;
for(i=0;i&lt;count;i++)
if(strlen(menu)&gt;len) len=strlen(menu);
endy=len+1+y;
endx=count+1+x;
if((endx+1&gt;24)||(endy+1&gt;79))
{
printf("menu dont'fit"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
return -2;
}
/*p=(unsigned int*)malloc((endx-x+1) *(endy-y+1));
if(!p) exit(1);
save_video(x, endx+1, y, endy+1, p);*/
if(border) disp_box(y, x, endy, endx, YELLOW);
display_menu(menu, x+1, y+1, count);
choice=get_resp(x+1, y, count, menu, keys);
/*restore_video(x, endx+1, y, endy+2, (unsigned char *)p);
free (p);*/
return choice;
}

int coustomize()
{
int delaytime;
delaytime=0;
window(36,10,76,20);
textcolor(GREEN);
textbackground(BLUE);
clrscr();
cprintf("\n Please input the delaytime (in milli-\n\r second):\n\r The greater the delaytime is,the slower the game is. It depends on your PC CPU frequency as well as your own preferenc es.The suggested num is:\n\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
textcolor(RED);
cprintf(" *** from 100 to 10000 ***\n\r"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
textcolor(GREEN);
cprintf(" input here:"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
cscanf("%d",&amp;delaytime);
return delaytime;
}
void light(void)
{
rectangle(535,65,565,155);
/*floodfill(545,100,BLUE);*/
setfillstyle(1,RED);
fillellipse(550,80,10,10);
sound(650);
delay(300);
nosound();
delay(100);
setfillstyle(1,YELLOW);
fillellipse(550,110,10,10);
sound(650);
delay(300);
nosound();
delay(100);
setfillstyle(1,GREEN);
fillellipse(550,140,10,10);
sound(650);
delay(300);
nosound();
delay(100);
setcolor(10);
setlinestyle(SOLID_LINE,0,3);
rectangle(150,400,450,460);
outtextxy(160,410,"Ready,Begin!"<img src="images/smilies/face-wink.png" align="absmiddle" border="0">;
}




Last edited by GOTOmsdos on 2005-10-22 at 00:35 ]


附件 1: zip_car.rar (2005-10-22 00:34, 292.94 KiB, 下载附件所需积分 1 点 ,下载次数: 72)
2005-1-15 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
yyz985
初级用户




积分 194
发帖 35
注册 2005-1-10
来自 上海
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下





我的主页:http://yyz985.go.nease.net
QQ:249590012 yyz985@yahoo.com.cn
2005-1-15 00:00
查看资料  发送邮件  访问主页  发短消息  网志  OICQ (249590012)  编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

代碼被ubb搞坏啦!


2005-1-21 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
crshen
中级用户




积分 447
发帖 126
注册 2004-2-10
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

不错




从来不用别人的东西,要用,也先改成自己的再说!
2005-1-22 00:00
查看资料  发送邮件  发短消息  网志  OICQ (67154440)  编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

"代碼被ubb搞坏啦!" 什么意思?


2005-1-22 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

void disp_box后都变成斜体了!


2005-1-22 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

是啊,我也不知道怎么回事? 不过,没关系的,如有兴趣的话,复制一下就行了,或者下载上传的文件就更方便了,...


2005-1-23 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

复制肯定不行!因爲:代碼中的被當作UBB格式轉掉了。不信你自己檢查


2005-1-23 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

那就下载上传的文件吧...


2005-1-24 00:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
orientlin
新手上路





积分 8
发帖 2
注册 2005-8-26
状态 离线
『第 10 楼』:  我想要下载啊 使用 LLM 解释/回答一下

我想要下载啊,怎么不让下啊?


2005-9-6 13:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

游戏已上传..
欢迎试玩..


2005-10-22 00:36
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kdlipm
初级用户





积分 31
发帖 16
注册 2005-12-4
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

顶一下


2005-12-5 02:11
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
henrya2
中级用户





积分 486
发帖 171
注册 2006-2-12
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下


不错




Those who do not study the past are condemned to repeat it
2006-3-4 22:50
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: