精华内容
下载资源
问答
  • //移动小球 } //弹出窗口:游戏结束 //"游戏结束!!!"--》提示信息 //"打砖块"--》新生成的窗口标题 //MB_OK--》只有一个【确定】按钮 MessageBox(NULL, L"游戏结束!!!", L"打砖块", MB_OK); return 0; } //......

    //easyx图形库头文件

    #include//控制台输入输出头文件

    //宏定义:砖块为:5行10列

    #define ROW 5

    #define COL 10

    //砖块数组

    int ZhuanKuai[ROW][COL] = { 0 };

    //小球坐标

    int ballx;

    int bally;

    //小球的速度一定,坐标均匀的改变

    int addx = 1;

    int addy = -1;

    //判断木板是否接到球

    bool starting = false;

    //木板坐标

    int boardx;

    int boardy;

    //绘制转块

    void DrawZhuanKuai();

    //初始化游戏

    void InitGame();

    //木板移动

    void MuBan();

    //小球移动

    void ballMove();

    int main(){

    //创建图形窗口

    initgraph(400, 600);

    //初始化游戏

    InitGame();

    //建立死循环,让游戏继续

    while (1){

    //kbhit()-->判断是否有按键按下

    //有按键按下--》true

    //无按键按下--》false

    //检测键盘输入:有输入,移动木板

    if (kbhit()){

    MuBan();

    }

    //如果木板接不到小球:终止循环

    if (bally > boardy){

    break;

    }

    ballMove();//移动小球

    }

    //弹出窗口:游戏结束

    //"游戏结束!!!"--》提示信息

    //"打砖块"--》新生成的窗口标题

    //MB_OK--》只有一个【确定】按钮

    MessageBox(NULL, L"游戏结束!!!", L"打砖块", MB_OK);

    return 0;

    }

    //...省略函数实现相关代码...

    ```

    ## 3. 函数实现相关代码

    ### 3.1 初始化游戏

    ```c

    //小球坐标

    int ballx;

    int bally;

    //木板坐标

    int boardx;

    int boardy;

    //初始化游戏

    void InitGame(){

    //初始化小球坐标

    ballx = 200;

    bally = 580;

    //初始化木板坐标

    boardx = 170;

    boardy = 590;

    //绘制转块

    DrawZhuanKuai();

    //绘制小球

    //设置填充颜色:粉红色

    setfillcolor(LIGHTRED);

    //绘制实心小球

    solidcircle(ballx, bally, 10);//坐标 + 半径

    //绘制木板

    //设置填充颜色:黄色

    setfillcolor(YELLOW);

    //绘制实心木板

    solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

    }

    ```

    ### 3.2 绘制砖块

    ```c

    //宏定义:砖块为:5行10列

    #define ROW 5

    #define COL 10

    //砖块数组

    int ZhuanKuai[ROW][COL] = { 0 };

    //绘制转块

    void DrawZhuanKuai(){

    for (int i = 0; i < ROW; i++){

    for (int j = 0; j < COL; j++){

    //判断是否有砖块

    if (ZhuanKuai[i][j] == 0){

    if ((i + j) % 2 == 0){

    //设置填充颜色为:天蓝色

    setfillcolor(LIGHTCYAN);

    //画出填充矩形:左上右下

    solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);

    }

    else{

    //设置填充颜色为:灰色

    setfillcolor(LIGHTGRAY);

    //画出填充矩形:左上右下

    solidrectangle(j * 40, i * 20, j * 40 + 40, i * 20 + 20);

    }

    }

    }

    }

    }

    ```

    ### 3.3 木板移动

    ```c

    //木板移动

    void MuBan(){

    //用黑色木板擦除之前的木板

    //设置填充颜色:黑色

    setfillcolor(BLACK);

    //绘制实心木板

    solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

    //让木板左右移动

    switch (getch()){

    case 75://向左移动

    boardx -= 15;

    break;

    case 77://向右移动

    boardx += 15;

    break;

    default:break;

    }

    //防止木板出界

    if (boardx <= 0){

    boardx = 0;

    }

    if (boardx >= (400 - 60)) {

    boardx = (400 - 60);

    }

    //重新绘制木板

    //设置填充颜色:黄色

    setfillcolor(YELLOW);

    //绘制实心木板

    solidrectangle(boardx, boardy, boardx + 60, boardy + 10);

    }

    ```

    ### 3.4 小球移动

    ```C

    //小球的速度一定,坐标均匀的改变

    int addx = 1;

    int addy = -1;

    //判断木板是否接到球

    bool starting = false;

    //移动小球

    void ballMove(){

    //用黑色小球擦除之前的小球

    //绘制小球

    //设置填充颜色:黑色

    setfillcolor(BLACK);

    //绘制实心小球

    solidcircle(ballx, bally, 10);//坐标 + 半径

    //开始绘制

    BeginBatchDraw();

    //小球碰墙壁

    //小球半径为:10

    if (ballx >= (400 - 10) || ballx <= (0 + 10)) {

    addx = -1 * addx;

    }

    if (bally <= 10){

    addy = -1 * addy;

    }

    //小球碰砖块

    int flag = 0;//标记小球打到砖块

    for (int i = 0; i < ROW; i++){

    for (int j = 0; j < COL; j++){

    //砖块坐标

    int x = j * 40;

    int y = i * 20;

    //小球遇到砖块

    if (ZhuanKuai[i][j] == 0 && x - ballx <= 10 && ballx - x <= 50 && bally - y >= 10 && bally - y <= 30) {

    addy = -1 * addy;

    ZhuanKuai[i][j] = 1;

    flag = 1;//控制跳出外层循环

    //让砖块消失

    //设置填充颜色:黑色

    setfillcolor(BLACK);

    //绘制实心木板

    solidrectangle(x, y, x + 40, y + 20);

    break;//退出内层循环

    }

    }

    if (flag){

    break;//退出外层循环

    }

    }

    //小球碰木板

    if (starting&&boardx - ballx <= 10 && ballx - boardx <= 70 && boardy - bally <= 10) {

    addy = -1 * addy;

    }

    starting = true;

    ballx += addx;

    bally += addy;

    //移动到新位置的小球

    //设置填充颜色:粉色

    setfillcolor(LIGHTRED);

    //绘制实心小球

    solidcircle(ballx, bally, 10);//坐标 + 半径

    //结束绘制

    FlushBatchDraw();

    Sleep(5);//延时5毫秒

    }

    ```

    ## 4. 成果展示

    ![](/image_editor_upload/20200417085513_80195.png)

    展开全文
  • short game_arr[HEI][WID];short next_blockarr[4][4];short cur_boxindex, next_boxindex;short cur_block_coord_x, cur_block_coord_y;//制作方块声明的函数... //用来存放游戏界面的数组int var; //用来记录该数...

    short game_arr[HEI][WID];

    short next_blockarr[4][4];

    short cur_boxindex, next_boxindex;

    short cur_block_coord_x, cur_block_coord_y;//制作方块声明的函数

    struct _game_arr {

    int info; //用来存放游戏界面的数组

    int var; //用来记录该数组的某个位置是否被占用 ,当方块没有移动了,

    //该位置才被占用,当移动方块是那个地方被占用就不能移动了 ,用1表示占用,0表示未占用

    }_game_arr[HEI][WID];

    char player_name[10] = "帅气逼人";

    void menu();

    void spm();

    void tmm();

    void Instructions();

    void ds();

    void pt();

    int flag=-1;

    while (!flag==0)

    {

    start();

    int a;

    printf("|--------------------|");

    printf("\n\n |欢迎来到俄罗斯方块|\n\n");

    menu();

    scanf("%d", &a);

    switch (a)

    {

    case 1:;

    break;

    case 2:;

    break;

    case 3:;

    break;

    case 4:;

    break;

    case 5:;

    break;

    default:printf("错误选项!\n\n"); //开始部分

    }

    while (1)

    {

    prfk();

    Sleep(speed); //延时

    clfk();

    Tb = x; Tc = flag; //临存当前x坐标和序号,以备撤销操作

    keyD();

    y++; //方块向下移动

    if (ifmov() == 0)

    {

    y--;

    prfk();

    clHA();

    break;

    } //不可动放下,删行,跨出循环

    }

    for (i = y - 2; i < y + 2; i++) { if (i == ZL) { j = 0; } } //方块触到框顶

    if (j == 0)

    {

    system("cls");

    gtxy(10, 10);

    printf("游戏结束!");

    _getch();

    break;

    }

    clNEXT(); //清除框外的NEXT方块

    }

    return 0;

    }

    void menu()

    {

    printf(" 1.单人模式\n\n");

    printf(" 2.双人模式\n\n");

    printf(" 3.游戏说明\n\n");

    printf(" 4.难度设置\n\n");

    printf(" 5.制作组\n\n");

    }

    void yxjm()//游戏界面

    {

    int i, j;

    system("cls");

    puts("\n\t\t");

    for (i = 0; i < HEI; i++)

    {

    for (j = 0; j < WID; j++)

    {

    if (_game_arr [i][j].info == 0) { printf("+");continue; }

    if (_game_arr [i][j].info == WALL)

    {

    if (i == 0 || i == HEI - 1) printf("-");//画横

    else printf("|"); continue;

    }

    if (_game_arr [i][j].info == BLOCK) printf("▉");

    }

    if (i == 1) printf(" 下一个方块");

    if (i >= 2 && i <= 5) //下一个方块

    {

    printf(" ");

    for (j = 0; j < 4; j++)

    {

    if (next_blockarr[i - 2][j] == 0) printf(" "); //要减2,因为从i事从2开始的

    else printf("▉");

    }

    }

    if (i == 10) printf(" 玩家:%s", player_name);

    if (i == 11) printf(" 得分:%d", score);

    if (i == HEI - 6) printf(" 操作");

    if (i == HEI - 5) printf(" ↑旋转");

    if (i == HEI - 4) printf(" ←左移");

    if (i == HEI - 3) printf(" →右移");

    if (i == HEI - 2) printf(" ↓下移");

    printf("\n");

    }

    }

    一键复制

    编辑

    Web IDE

    原始数据

    按行查看

    历史

    展开全文
  • C语言实现菜单窗口\用C语言编写动画,
  • C语言游戏菜单界面设计 与 游戏整合

    千次阅读 多人点赞 2020-04-22 15:53:23
    游戏菜单界面设计 与 游戏整合 旧文档 2019.11 小时候一直觉得4399小游戏的那些游戏菜单好low,现在做完我的菜单界面回去去看看感觉还不错。。。 菜单制作过程 完整代码 https://paste.ubuntu.com/p/HZBWXMWT8K/ ...

    游戏菜单界面设计 与 游戏整合

    旧文档 2019.11

    小时候一直觉得4399小游戏的那些游戏菜单好low,现在做完我的菜单界面回去去看看感觉还不错。。。

    菜单制作过程

    完整代码

    博客代码链接
    https://paste.ubuntu.com/p/HZBWXMWT8K/

    img

    img

    img

    详细介绍:

    前言

    从走迷宫起,到五子棋,再到做完象棋,再到去学下图书馆管理系统程序设计。其实我对做游戏或管理系统不是有很大兴趣,之前觉得设计界面麻烦,觉得c语言书上那个图书馆管理系统程序好无聊,还觉得做游戏又麻烦又累,然后自从那天学会简单的wasd移动得知原来可以这么巧妙地控制小球移动后,就真香了。。。

    可能是主动去做就比被动要求去做更有兴趣些。

    菜单设计:

    • 游戏菜单系统参考:C语言书上的图书馆管理系统
    while (1) //主体程序
    {
        menu();
        char choise;
        choise = getch();
        switch (choise)
        {
        case '1':
            xiangqi(), break;   //进入象棋
        case '2':
            wuziqi(), break;    //进入五子棋
        case '3':
            more(),break;       //进入更多信息
        case '4':
            return 0;           //退出
        }
    }
    
    • 新增功能:页面加入加载效果(Sleep),实现“按任意键继续”功能(getch)。
    for (i = 0; i < 37; i++) //实现起来都挺简单
    {
        puts(map[i]);
        Sleep(100);
    }
    printf("任意键继续\n");
    getch();
    

    游戏整合:

    • 主函数只负责调用菜单界面和循环选择;
    • 菜单界面负责循环选择进入多个独立的自定义游戏函数;
    • 原来的游戏若没有调用函数则直接打包扔进自定义游戏函数里去(把main函数去了)
    • 原来游戏若调用了函数则游戏主程序放相应的游戏函数,调用函数放外面。若需要改变实参,则还需调整。

    中国象棋 五子棋

    整体这里难度都没有象棋那边大。

    但给了后面写系统程序做了铺垫

    待更ing

    展开全文
  • C语言-菜单管理系统

    2019-02-27 14:00:39
    以前自己写的餐单管理系统,用C写的,需要的可以借鉴一下
  • 在win-tc 下 全屏图形界面,是个不错的用具 呵呵 c语言图形界面菜单 c语言图形界面菜单 c语言图形界面菜单
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼改写猜价格游戏的程序(见下),实现对这个游戏的一些管理功能,可以根据菜单对商品进行添加、删除、查找、浏览等操作,根据模块间数据传递的方式分析各个模块的函数原型及...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    改写猜价格游戏的程序(见下),实现对这个游戏的一些管理功能,可以根据菜单对商品进行添加、删除、查找、浏览等操作,根据模块间数据传递的方式分析各个模块的函数原型及调用关系,并完成程序编写。商品价格要求在限定范围内取随机值。

    如有兴趣可以完成更多功能(不属于作业要求内容),如:

    使用链表存储商品(需要对链表进行操作的一些工具函数);

    商品类型中加入商品个数信息,增加统计功能;

    对用户进行分类(如管理员看到的界面和普通用户看到的界面应该是不同的);

    增加文件存储功能等等。

    #include 

    #include 

    #include 

    #include 

    #define MAXNUMOFGOODS 5

    #define MAXNUMOFGUESS 6

    struct GOODSTYPE

    {

    char name[20];

    int price;

    int lb;

    int ub; };

    void Begin( struct GOODSTYPE goods[], int size, struct GOODSTYPE* pchoice );

    void Play( struct GOODSTYPE* pgoods );

    int CheckNewGame();

    void ListGoods( struct GOODSTYPE goods[], int size );

    struct GOODSTYPE Select( struct GOODSTYPE goods[], int size );

    int GuessPrice( struct GOODSTYPE* pgoods );

    int Judge( struct GOODSTYPE* pgoods, int price );

    int main()

    {  struct GOODSTYPE goods[ MAXNUMOFGOODS ] = { { "Book", 61, 20, 120 },

    { "Radio", 177, 100, 300 },

    { "Electric Cooker", 395, 200, 500 },

    { "Microwave Oven", 988, 500, 1500 },

    { "Television", 2199, 1000, 3000 } };

    struct GOODSTYPE choice;    clrscr();

    while( 1 )

    {

    Begin( goods, MAXNUMOFGOODS, &choice );

    Play( &choice );

    if( !CheckNewGame() )

    {

    printf( "Thank you!\nBye!\n" );

    break;

    }

    }

    return 0;

    }

    void Begin( struct GOODSTYPE goods[], int size, struct GOODSTYPE* pchoice )

    {

    /* 列出全部商品 */

    ListGoods( goods, size );

    *pchoice = Select( goods, size );

    }

    void Play( struct GOODSTYPE* pgoods )

    {

    int i, price, judge;

    for( i = 0; i 

    {

    price = GuessPrice( pgoods );

    judge = Judge( pgoods, price );

    switch( judge )

    {

    case -1:

    printf( "Low. %d opportunities left.\n", MAXNUMOFGUESS - i - 1 );

    break;

    case  0:

    printf( "Congratulations! You win the %s!\n", pgoods->name );

    break;

    case  1:

    printf( "High. %d opportunities left.\n", MAXNUMOFGUESS - i - 1 );

    break;

    }

    if( judge == 0 ) break;

    }

    if( price != pgoods->price )

    printf( "\n+++ You lose! +++\n+++ The price is %d +++\n", pgoods->price );

    }

    int CheckNewGame()

    {

    static char replay[2] = "N";

    printf( "\nDo you want to play another game ( Y | N )? " );

    gets( replay );

    if( toupper( replay[0] ) == 'Y' )

    return 1;

    else

    return 0;

    }

    void ListGoods( struct GOODSTYPE goods[], int size )

    {

    int i;

    printf( "++++++++++++++++        Welcome!         ++++++++++++++\n\n" );

    printf( "Choose one from the list. You'll get it if you can\n" );

    printf( "tell the price within %d times.\n\n", MAXNUMOFGUESS );

    printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++\n" );

    for( i = 0; i 

    printf( "%d. %-20s(price : %d-%d)\n", i + 1, goods[i].name,

    goods[i].lb, goods[i].ub );

    printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n" );

    }

    struct GOODSTYPE Select( struct GOODSTYPE goods[], int size )

    {

    int sel;

    printf( "Input your choice (%d-%d), Others to quit the game: ",

    1, size );

    scanf( "%d", &sel );

    if( sel  size )

    exit( 0 );

    return( goods[ sel - 1 ] );

    }

    int GuessPrice( struct GOODSTYPE* pgoods )

    {

    int price;

    while( 1 )

    {

    printf( "Input your price between %d and %d: ",

    pgoods->lb, pgoods->ub );

    scanf( "%d", &price );

    getchar();

    if( ( price >= pgoods->lb ) && ( price <= pgoods->ub ) )

    break;

    else

    printf( "Out of range, please input a price between %d and %d.\n",

    pgoods->lb, pgoods->ub );

    }

    return price;

    }

    int Judge( struct GOODSTYPE* pgoods, int price )

    {

    if( price == pgoods->price )

    return 0;

    else if( price price )

    return -1;

    else

    return 1;

    }

    展开全文
  • 利用windows.h中的SetConsoleCursorPosition光标位置控制 SetConsoleCursorPosition是一个C语言中的windows.h库函数,声明变量COORD coord,COORD 是一个结构体,X,Y表示列和行,注意:X是列,Y是行(与正常逻辑...
  • C语言菜单小程序

    2012-05-29 16:34:14
    在主函数中要求出现如下字符菜单信息: 1—钻石形输出 2—平行四边形输出 3—退出 当在键盘上,按下相应的数字键就调用相应的函数,比如:按下“1”就调用钻石形输出的函数。
  • C语言写个贪吃蛇游戏

    万次阅读 多人点赞 2020-02-19 08:24:09
    贪吃蛇是个非常经典的游戏,用C语言来实现也是一个好玩的事情。这个游戏我写完后放在知乎,竟然点赞的人数超级多。我觉得大家喜欢,一个方面是因为写得简单,大家都能看得懂,一个可扩展性还是非常强...
  • C语言】仿照管理系统做的游戏菜单系统 程序介绍:【C语言游戏菜单界面设计 与 游戏整合 /*----------------- 实际写了1500行 这个游戏是第一次做大工程,其实语言可以更简练压缩到800行左右。 后续再改进。 ----...
  • C语言游戏设计——扫雷 C语言的第二个游戏,(历时3小时)很有成就感。 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> void menu(); void Clean(char Board...
  • C语言】贪吃蛇游戏的实现(一)

    万次阅读 多人点赞 2018-12-28 11:32:38
    最近由于小创需要,捣鼓了一个贪吃蛇游戏,系统由纯C语言开发,VC++6.0编译通过,具体的运行效果如下: 略显简陋的开始界面,图案是我一点一点拼的,因为有\需要转义,所以对齐也花了不少时间,足够繁杂和无聊的...
  • c语言游戏

    2017-09-22 15:43:18
    c产生随机数一个公式: 导入"stdlib"头文件 然后:rand()%n(ps:产生的数范围在[0~n)内,要哪个范围就将n定为该数字 附上一个用到的简单c游戏: ...voidmap()//游戏菜单函数。 { system("title拼图游戏
  • C语言拼图游戏

    2020-03-13 20:27:45
    2,绘制一个开始界面的菜单 图形库(画矩形,填充颜色),文字输出,鼠标操作 3,加载资源 切割技术,用到随机函数,随机产生一维数组下标,然后赋值给二维数组进行初始化。 4,贴图 我这里3行3列的。遍历二维数组...
  • 它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。在数学中也有这样一类数字有这种特征,成为回文数(palindromenumber)。设n是一随意自然数。若将n的各位数字反向排列所得自然数n1与n相等,...
  • 小学生加法器c语言小学生加法器c语言“高级语言程序设计”课程实习报告PAGEPAGE 12石家庄经济学院“高级语言程序设计”课程实习报告班 级: 4101090302 姓 名: 李春平 学 号: 410109030222 日 期: 2011-10-19目录...
  • C语言扫雷游戏

    2020-03-31 15:42:05
    适合c语言初学者,c语言游戏,函数的声明game.h文件,测试test.c文件,难点,game.c文件。 先从test.c文件着手,完成我们想要的输出,例如菜单,输入选择,函数声明放在game.h文件,game.c中完成各种功能。 输入...
  • C语言游戏_弹弹乐(打砖块)

    千次阅读 多人点赞 2015-06-27 14:18:57
    自从学了C语言,总想着写点好玩的东西出来,由于我比较喜欢玩游戏,所以对写游戏一直情有独钟。 这次花费了一个月左右的时间用纯C语言写了一个我比较喜欢的一款游戏《弹弹乐》出来,在这里分享给大家,希望能给大家...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼改写猜价格游戏的程序(见下),实现对这个游戏的一些管理功能,可以根据菜单对商品进行添加、删除、查找、浏览等操作,根据模块间数据传递的方式分析各个模块的函数原型及...
  • 实现功能首先显示一个小菜单,选择是否玩游戏。当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位置坐标。当用户输入坐标超出棋盘范围或者位置之前已经进行扫雷时,将提示用户重新输入。当...
  • 在学习C语言的时候, 大家都做过很多管理系统。菜单往往很单调,是这样的     学习知识要善于思考,思考,再思考。靠这个方法才能成为C/C++大牛哦。如果你学习时没有学会思考,那就永远学不会思考。思考的...
  • 贪吃蛇游戏 C语言

    2020-12-15 20:49:45
    ** 编写贪吃蛇游戏 ...开始:按左键开始游戏,按按钮或菜单重新开始。 下键:按下时,是蛇向下行, 当碰到墙壁时,游戏结束。 左键:按左时,是蛇向左行, 当碰到墙壁时,游戏结束。 右键:按右时,
  • C语言制作游戏——贪吃蛇

    万次阅读 多人点赞 2017-09-07 21:06:30
    利用c语言写的一个贪吃蛇小游戏,界面精良,经测试没什么bug。欢迎大家提出建议
  • c语言游戏

    2021-01-18 15:09:14
    #include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> void game() { int ret; int guess = 0; printf("即将生成1--100内任意一数值\n\n");... printf(" 游戏开始
  • C语言游戏之贪吃蛇--链表实现

    千次阅读 2017-03-30 17:37:13
    (很烦C语言指针)调试了很久也大概是可以畅快的玩了。 C语言新手,有很多写得不好的地方望大神提出 当然,我也不介意把我代码拿去学习(这样就说明我的代码有学习价值) 头文件:snake.h /** *By Liu Yuchuan *...
  • C语言游戏2——扫雷

    千次阅读 2020-11-06 16:03:15
    C语言实现扫雷游戏代码下载一、多文件思维二、游戏总体思路与函数设计实现2.1 游戏主控制函数Game2.2 游戏菜单Menu2.3 埋雷SetMines2.3 显示面板ShowBoard2.4 坐标周围布雷情况三、多文件代码清单3.1 game.h3.2 game...
  • C语言猜数字游戏

    2020-03-24 20:48:04
    C语言猜数字游戏 设计思路 1.首先定义了一个打印菜单 2.利用srand((unsigned int)time(NULL)) 函数完成对随机数的刷新产生了一组随机数,随机数在种子中抽取 3.游戏内容由game()函数完成 运行结果如下: 1.主界面 ...
  • 常用电脑快捷键大及游戏全屏问题常用电脑快捷键大全按”shift”+”6” 是省略号……,方法:shift+6(主键盘上的6,就是Y键对上去的那个6),前提是在你有五笔输入法的状态栏上,必须是中文标点,就是有个软件盘的旁边...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,119
精华内容 2,847
关键字:

c语言游戏菜单

c语言 订阅