ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:152.66KB ,
资源ID:2727260      下载积分:14 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2727260.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(C语言图形五子棋优秀课程设计优质报告.docx)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C语言图形五子棋优秀课程设计优质报告.docx

1、北京师范大学 C语言课程设计汇报 课题名称: 游戏五子棋 指导老师: 尹乾 课题组员: 罗福莉 赵帅帅 何虹达 院系: 信息科学和技术 时间: .3.15-.4.20 摘 要 五子棋是一个两人对弈纯策略型棋类游戏,应用C语言编写程序能够在计算机上实现二人对弈五子棋功效。二人对弈五子棋程序由欢迎界面显示、游戏界面生成、光

2、标移动和落子、判定胜败、悔棋功效、提供音效等子程序组成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序经过棋盘和棋子图像生成、二人移子和落子和判定胜败等功效实现,在计算机上实现了二人五子棋对弈。 目 录 摘 要 2 第1章:需求分析 3 1.1五子棋背景 3 1.2 五子棋需求分析和步骤设计 4 第2章:概要设计 7 2.1 各类头文件和全局变量 7 2.2 画面显示模块 8 第3章:具体设计 11 3.1 玩家操作模块 11 3.2音效提供模块 11 3.3 胜败判定模块 12 第

3、4章:调试分析 13 4.1 图形模块 13 4.2 玩家操作模块 13 4.3 胜败判定模块 14 第5章:用户手册 14 第6章:小组分工 15 第7章:结论和心得 16 第8章 :源程序代码 16 附录一 Color命令使用说明 29 附录二 ASCII 码表 29 第1章:需求分析 1.1五子棋背景 传统五子棋棋具和围棋相同,棋子分为黑白两色,棋盘为18×18,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮番下一子,先将横、竖或斜线5个或5个以上同色棋子连成不间断一排者为胜。 因为传统五子棋在落子后不能移动或拿掉,所以也能够用纸和笔来进行游

4、戏。 1.2 五子棋需求分析和步骤设计 本程序设计为人和人对弈,一方执黑棋,一方执白棋,轮番走棋,每方全部试图在游戏结束前让自己棋子五子相连,首先实现五子相连一方获胜。程序实施过程中,要求棋盘、棋子时时可见,游戏界面有提醒信息轮到何方下棋,人能够经过按键盘按键移动光标,再点击enter键摆放棋子,而且每落一子全部有系统声音,创新之处是能够提供悔棋功效。 1.2.1 程序需求分析 依据功效需求,将程序分为画面显示、玩家操作、音效提供、胜败判定五个模块,以下分析各模块需求。 画面显示模块:程序开始运行时,显示制作者和给出欢迎及退出界面;游戏开始后要求生成18×18棋

5、盘图像,并在棋盘上方显示欢迎信息“欢迎play our五子棋”,棋盘下方游戏显示应该轮到甲方或乙方落子,棋盘左右显示双方操作方法,进行过程中,要求实时显示棋盘上已落下棋子,甲方为白球,乙方为白圈;分出胜败后,要求给出游戏结束画面,而且问询用户是否需要继续游戏。 玩家操作模块:程序开始时,需玩家确定选择“人人对战”后开始游戏;游戏过程中,两个玩家经过不一样按键移动光标,选择落子;游戏进行过程中,目前玩家下棋后,另一位玩家下棋前,目前玩家能够悔棋。悔棋提醒在棋盘右下方,为按键“b”。游戏结束时,有玩家选择是否开始新游戏。 音效提供模块:玩家每落一子,系统提供音效一声,增加下棋趣味性。

6、胜败判定模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止游戏程序,并着色连成一线五子,棋盘下方弹出该色玩家胜出信息。 1.2.2程序步骤设计 依据程序需求分析结果,能够得出程序总体结构图图1,程序总体步骤图图2。 五子棋游戏 五子棋 模块二: 玩家操作 模块三: 音效提供 模块四: 胜败判定 模块一: 画面显示 图1 五子棋总体结构图 开始 制作者展示 进入菜单

7、界面 N 人人对战? 退出游戏 Y 是否继续新游戏 ? 开始游戏 ESC Y 确定退出? b 悔棋 甲方判定 N Enter 甲方获胜? 退出游戏 显示甲方获胜消息 Y 确定退出? N 乙方判定 ESC b 悔棋 Y Enter N 显示乙方获胜消息 乙方获胜? Y N 图2 程序总体步骤图 第2章:概要设计 2.1 各类头文件和全局变量 #includ

8、e #include #include #include //使用getch()函数 int startchoice; // int winner; // int player; // Q[200][200]= {0}; //Q数组统计旗子 char button; //读入键盘输入指令,如→ 2.2 画面显示模块 画面显示模块由欢迎界面,游戏棋盘界面,确定是否退出对话框界面,和感谢使用界面组成。 画面显示模块

9、函数以下: void Welcome() //欢迎界面 void Draw() //绘画游戏棋盘界面 void Clean() //清除—→运动轨迹 void menu_choose(char press) //选择是否退出游戏对话框 void PutDown() //显示落子函数 void goto_xy(int x, int y) //光标移动函数 画面效果图图3,4,5,6。 图3 欢迎界面图

10、 图4 主菜单界面图 图5 游戏界面图 图6 确定退出对话框 第3章:具体设计 3.1 玩家操作模块 棋子移动和落子有键盘上按键控制,本程序选择甲乙双方按键全部为W、S、↑、↓、←、→和回车键,“b”,“ESC”,分别代表上移、下移、左移、右移光标和落子,悔棋,退出。在光标移动过程中,光标根据玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判定胜败子程序。目前玩家下棋后,另一位玩家下棋前,目前玩家能够悔棋。悔棋提醒在棋盘右下方,为按键“

11、b”。甲乙落子后,程序会为落子处数组元素赋一个特定值(玩家甲棋子赋为1,玩家乙棋子赋为2),用于判定胜败和悔棋。 玩家操作模块关键由以下函数组成: void Record() //统计棋子情况 void go_back(int x1,int y1) //悔棋函数 void Play(char ch) //读取键盘操作 移动光标 下棋和悔棋操作 3.2音效提供模块 为了提升游戏趣味性,我们为本游戏提供了简单系统音效。程序语句很简单 printf("\a"); //'\a'表示蜂鸣声 3.3 胜败判定模块 胜败判定模块是

12、程序关键,该模块设计直接关系到程序运行速率和运行结果正确是否。本函数依据每次落子位置,分别向上、下、左、右、左上、左下、右上、右下八个方向判定是否有相同颜色棋子连成五子,假如成立,游戏就结束,并显示提醒信息,不然继续落子。 以下简析本程序步骤:,由获胜条件能够知,经过判定行、列、斜边、反斜边方向上是否有连续5个子即可得出是否获胜结果。在游戏开始时,将棋盘初始化,立即棋盘抽象为一个18*18数组,数组中每个元素数值设为0。甲方落子时,将数组内对应坐标处元素赋值为2;乙方落子时,将数组内对应坐标处元素赋值为1。经过循环扫描棋盘数组,经扫描后,如发觉在行、列、斜边、反斜边方向上有五个连续2,甲方获

13、胜;如发觉在行、列、斜边、反斜边方向上有五个连续1,乙方获胜。 胜败判定模块关键由一个函数组成: int Judge() //判定胜败函数 第4章:调试分析 4.1 图形模块 1.在图形模块中,因为是第一次使用,所以刚开始时对于棋盘创建位置把握有些欠缺。 处理方案:参考书本和谷歌,找出最适宜位置坐标。 2. 在构建棋子时候,发觉C语言中似乎对颜色处理有些错误,当棋谱线颜色为白色时,无法构建黑色棋子,只能画出白色棋子。 处理方案:用白圈区分于白球,类似白子和黑子。 4.2 玩家操作模块 1. 在玩家操作模块中,出现最大问题之一就是棋盘已经

14、有棋子地方还能够覆盖另一个棋子。 处理方案:经过在PutDown()函数中添加if条件语句,判定假如所在位置对应数组值不等于0时,不能落子。 2. 另一个问题就是之前提到,操作定位框时候会将定位框移到棋盘之外造成溢出。 处理方案: 经过if语句判定,假如操作框超出范围则移动到对应相反位置,比如移动棋盘最上端,若继续向上移动,则移动至棋盘最下端对应位置。 3. 还有一个就是悔棋模块中,经过将现有棋子覆盖和棋盘底色相同颜色来覆盖后,棋谱线条部分也会被覆盖。 处理方案:在go_back();即悔棋函数。用棋谱线来覆盖棋子(比如:┌ └ ├等)。 4.3 胜败判定模块 1. 在胜败判定中

15、一直没能想到好措施来数据化判定哪方玩家取得胜利。 处理方案:经过参考书籍并加以优化,得出将棋谱做成数组,定义甲方落下为1,乙方落下为2,初始为0,这么即不会造成冲突,也很好处理了判定问题。 2. 另一个问题在于一直不能优化代码做到不每次全部扫描整个棋盘来判定胜败。 处理方案:至今还未处理,尝试过局部扫描,但失败了。 第5章:用户手册 1.进入演示程序后,即显示欢迎界面,几秒后,按任何键进入菜单界面,再选择人人对战能够进入主界面开始游戏或选择退出键。 2.棋子移动和落子有键盘上按键控制,本程序选择甲乙方全部为↑、↓、←、→和回车键,分别代表上移、下移、左移、右移光标和落子。在光标移动

16、过程中,光标根据玩家按键移动;在玩家按下落子按键后,程序自动调用棋子显示子程序和判定胜败子程序。 3. 在目前玩家按下落子按键后,程序自动调用棋子显示子程序和判定胜败子程序。目前玩家下棋后,另一位玩家下棋前,目前玩家能够悔棋。悔棋提醒在棋盘右下方,为按键“b”(即backspace)。 4.游戏中Esc键能够直接退出游戏。 5.游戏过程中,假如玩家1或玩家2有一方取得胜利后,程序自动将提醒哪一方取得了胜利,并能够选择是否继续新游戏。 6.游戏结束且玩家选择不再继续后,显示谢谢使用界面,再按任意键退出游戏。 第6章:小组分工 组长:罗福莉 组员:赵帅帅,何虹达 具体分工: 组员

17、 任务分工 罗福莉 汇报书写 程序调试 展示结果 赵帅帅 胜败判定设计 主函数设计 何虹达 界面制作 程序调试 第7章:结论和心得 经过对各子程序设计和优化,本程序完成了五子棋软件主体设计和制作,基础达成了使用五子棋软件关键要求。然而程序还有部分不足之处,首先,程序界面过于简陋,其次,判定胜后没有显示连成一线棋子是哪些,用户使用不便。最终就是程序法实现人机对战,缺乏可玩性。 第8章 :源程序代码 //五子棋小游戏 #include #include

18、ndows.h> #include #include //使用getch()函数 int startchoice,winner,player,Q[200][200]= {0}; //Q数组统计旗子 char button; //读入键盘输入指令,如→ struct Point //点坐标结构体 { int x,y; } point,game_xy; struct Piece //棋子坐标统计 { struct Point coord; struct Piece *

19、fore; }; struct Piece *head,*p,*ptr,*ptr1; void goto_xy(int x, int y) //光标移动函数 { COORD c; c.X=2*x; c.Y=y; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); } void Init() //初始化函数,将统计棋子数组初始化 { for(int i=0; i<200; i++) for(int j=0;

20、 j<200; j++) Q[i][j]=0; startchoice=0; player=1; p=(struct Piece *)malloc(sizeof(struct Piece)); head=p; } void Welcome() //欢迎界面 { system("color 2F"); //#include 2 背景绿色 F 字体亮白色 goto_xy(10,3); printf("—→"); goto_xy(17,1);

21、 printf("主菜单"); goto_xy(13,3); printf(" ***人人对战***"); goto_xy(13,4); printf(" ***退出***"); point.x=12; point.y=3; goto_xy(0,0); } void ShowWho() //显示轮到哪一方下棋 { goto_xy(17,22); if(player==0) printf("轮到甲方落子"); else pri

22、ntf("轮到乙方落子"); goto_xy(point.x,point.y); } void Draw() //绘画游戏界面 { game_xy.x=10; game_xy.y=3; system("cls"); system("color 3F"); //3 湖蓝色 F 亮白色 goto_xy(15,1); printf("欢迎play our 五子棋!"); /*goto_xy(29,22); printf("重新开始 r");*/

23、goto_xy(1,22); printf("悔棋 b"); goto_xy(1,23); printf("退出 ESC"); const int i=8; //const 定义数据不能够被改变 而且修改数据比较方便 const int j=19; const int k=3; goto_xy(game_xy.x-i,game_xy.y+k); //输出甲方下棋方法 printf("甲方: ●"); goto_xy(game_xy.x-i,game_xy

24、y+k+2); printf("移动: 上 ↑"); goto_xy(game_xy.x-i,game_xy.y+k+4); printf(" 下 ↓"); goto_xy(game_xy.x-i,game_xy.y+k+6); printf(" 左 ←"); goto_xy(game_xy.x-i,game_xy.y+k+8); printf(" 右 →"); goto_xy(game_xy.x-i,game_xy.y+k+10); printf("落子

25、 Enter"); goto_xy(game_xy.x+j,game_xy.y+k); //输出乙方下棋方法 printf("乙方: ○"); goto_xy(game_xy.x+j,game_xy.y+k+2); printf("移动: 上 ↑"); goto_xy(game_xy.x+j,game_xy.y+k+4); printf(" 下 ↓"); goto_xy(game_xy.x+j,game_xy.y+k+6); printf(" 左 ←");

26、 goto_xy(game_xy.x+j,game_xy.y+k+8); printf(" 右 →"); goto_xy(game_xy.x+j,game_xy.y+k+10); printf("落子: Enter"); for(int k1=0; k1<200; k1++) //初始化棋子统计,在第二局时有明确作用 for(int k2=0; k2<200; k2++) Q[k1][k2]=0; for(int i=0; i<18; i++) //画棋盘

27、 { if(i==0) //画第一行 { goto_xy(10,i+3); printf("┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐"); } if(i!=0&&i!=17) //画出中间16行 { goto_xy(10,i+3); printf("├┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┼┤"); } if(i==17) //画最

28、终一行 { goto_xy(10,i+3); printf("└┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┘"); } } point.x=19; point.y=12; goto_xy(19,12); } void Clean() //清除—→运动轨迹 { goto_xy(10,3); printf(" "); goto_xy(24,3); printf(" "); goto_xy(10,4)

29、 printf(" "); goto_xy(24,4); printf(" "); } void menu_choose(char press) //选择游戏还是退出 { if(press==72) //↑ASCLL码 { if(point.y==3) point.y=4; else point.y=3; Clean(); goto_xy(10,point.y); prin

30、tf("—→"); } if(press==80) //↓ASCLL码 { if(point.y==4) point.y=3; else point.y=4; Clean(); goto_xy(10,point.y); printf("—→"); } if(press==13) // 13:回车键ASCLL码 { startchoice=point.y-2; //startchoice 为1或2

31、 } } void go_back(int x1,int y1) //悔棋函数 { goto_xy(x1,y1); if(x1==10) { if(y1==3) { printf("┌"); } else if(y1==20) { printf("└"); } else { printf("├"); }

32、 } else if(x1==27) { if(y1==3) { printf("┐"); } else if(y1==20) { printf("┘"); } else { printf("┤"); } } else { if(y1==3) {

33、 printf("┬"); } else if(y1==20) { printf("┴"); } else { printf("┼"); } } Q[point.x][point.y]=0; //在数组中将弹出棋子对应数据设为0 goto_xy(x1,y1); } void Record() //统计棋子情况 { p->coord.

34、x=point.x; p->coord.y=point.y; ptr=p; p=(struct Piece *)malloc(sizeof(struct Piece)); p->fore=ptr; ShowWho(); Q[point.x][point.y]=player+1; if(player) { player=0; return; } player=1; goto_xy(point.x,point.y); } void PutDo

35、wn() //显示落子函数 { if(Q[point.x][point.y]==0) //先判定该位置是否有棋子 { if(player) { printf("●"); printf("\a"); //'\a'表示蜂鸣声 Record(); } else { printf("○"); printf("\a"); Reco

36、rd(); } goto_xy(point.x,point.y); } } void Play(char ch) //键盘操作 移动光标 下棋和悔棋操作 { if(ch==72) //↑ASCLL码 光标上移 { if(point.y<=3) point.y=20; else point.y--; goto_xy(point.x,point.y); } if(ch==75) //←ASCLL码 光标

37、左移 { if(point.x<=10) point.x=27; else point.x--; goto_xy(point.x,point.y); } if(ch==77) //→ASCLL码 光标右移 { if(point.x>=27) point.x=10; else point.x++; goto_xy(point.x,point.y); } if(ch==80)

38、 //↓ASCLL码 光标下移 { if(point.y>=20) point.y=3; else point.y++; goto_xy(point.x,point.y); } if(ch==13) //回车键ASCLL码 下棋 { PutDown(); } if(button=='b'||button=='B') //悔棋操作 { ptr1=p; if(p!=hea

39、d) { p=p->fore; free(ptr1); point.x=p->coord.x; point.y=p->coord.y; go_back(point.x,point.y); } } } int Judge() { int count=0; int pp=player==0?2:1; //三目运算 for(int c=0; c<200; c++) {

40、 for(int r=0; r<200; r++) { if(Q[r][c]!=pp) continue; //检验列 int rr=r; int cc=c; while(--cc>=3 &&Q[rr][cc]==pp) count++; cc=c; while(++cc<23 &&Q[rr][cc]==pp) count++;

41、 cc=c; if(count>=4) return pp; //检验行 count=0; while(--rr>=10 &&Q[rr][cc]==pp) count++; rr=r; while(++rr<30 &&Q[rr][cc]==pp) count++; rr=r; if(count>=4) return

42、 pp; //检验反斜边 count=0; cc--; rr--; while((cc>=3||rr>=10) &&Q[rr][cc]==pp) { count++; cc--; rr--; } rr=r; cc=c; cc++;

43、 rr++; while((cc<23||rr<30) &&Q[rr][cc]==pp) { count++; cc++; rr++; } rr=r; cc=c; if(count+1>=5) return pp; //检验正斜边 count=0;

44、 cc++; rr--; while((cc<23||rr>=10) &&Q[rr][cc]==pp) { count++; cc++; rr--; } rr=r; cc=c; cc--; rr++; while((cc>=3||rr<30) &&Q[rr][cc

45、]==pp) { count++; cc--; rr++; } rr=r; cc=c; if(count+1>=5) return pp; count=0; } } return 0; } int main(void) { system("color 4E

46、"); printf("\n 欢迎play五子棋!"); goto_xy(15,3); printf("作者:小萝莉"); goto_xy(17,5); printf(" HE·Honda"); goto_xy(17,7); printf(" ZSSB"); Sleep(3000); system("cls"); while(1) { Init(); //初始化 int winner=0; Welcome(); //欢迎界面 w

47、hile(1) //读取菜单选项 { char choice=getch(); menu_choose(choice); if(startchoice!=0) break; } if(startchoice==1) //选择人人对战 { Draw(); goto_xy(17,22); printf("轮到甲方落子"

48、); goto_xy(point.x,point.y); while(1) { button=getch(); Play(button); //读取键盘操作 移动光标 下棋和悔棋操作 if(button==27) //ESCASCLL码 { if(MessageBox(NULL,TEXT("确定退出?"),TEXT(""),MB_ICONQUESTI

49、ON|MB_OKCANCEL)==IDOK) { system("cls"); printf("\n 谢谢使用!\n"); return 0; } } if(button==13) //回车键ASCLL码 按下后开始判定输赢 winner=Judge(); if(winner!=0) { goto_xy(15,24

50、); if(winner==2) { printf("恭喜!甲方赢!\n"); } if(winner==1) { printf("恭喜!乙方赢!\n"); } } if(wi

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服