C语言,贪吃蛇程序设计

  • 一.代码分析
    • (1)头文件
    • (2)宏定义
    • (3)全局变量
    • (4)函数部分
      • 1)绘制地图函数DreawMap(),
      • 2)食物位置函数FoodRand()
      • 3)键盘控制移动函数ControlMove()函数
      • 4)移动函数Move()函数
      • 5)蛇身开始函数Isnake()函数
      • 6)判断食物是否被吃到函数Jfood()函数
      • 7)判断是否碰到墙Jwell()函数
      • 8)判断是否碰到蛇身Jsnake()函数
      • 9)计算分数和难度Showf()函数
      • 10)清空存储空间函数
  • 二.代码附录

一.代码分析

(1)头文件

1.include<stdio.h>
2.Include<windows.h>
3.Include<string.h>

(2)宏定义

#define WIDTH 40定义宽度为40
#define HEIGHT 20定义高度为20
#define PRINTF printf(“◼”);定义PRINTF表示输出边框符号
#define LINE printf(“\n”);定义LINE表示输出换行符
#define EMPTY printf(“ ”);定义EMPTY表示输出空格,empty在计算机科学中表示空。

(3)全局变量

Int sum = 0;定义整型变量sum用来计算得分
Int JudgeSum = 0;定义整型变量JudgeSum用来判断速度
Int Hard = 0;定义整型变量Hard用来计算难度
Int Pause = 200000000;定义整型变量并初始化为两亿用来控制移动速度
Int JudgeDirection = 4;定义整型变量用来判断方向
Int *PJ = &JudgeDirection;定义指向整型数据的指针,并赋给JudegDirection的地址使用指针传值判断方向。

(4)函数部分

1)绘制地图函数DreawMap(),

思路:一行一行的输出,输出完一行就换行继续输出,直到输出完边框部分。
第一步:先输出第一行,输完第一行进行换行。(这里@代表◼)

 for (int i = 0; i < WIDTH; i++)//意思是定义i等于0,如果i小于{                          //宽度WIDTH,则输出边框符号@,循环printf("@");         //一次i就加1;最后输出换行符号\n}printf("\n");

地图宽度是40,0~39刚好是40个,每循环一次就输出一个边框符号。输完第一行,此时光标就在第二行开始的地方。
第二步:输出中间的行数,每行的开头和结尾输出边框符号,其他地方输出空格;

 for (int i = 1; i < HEIGHT-1; i++)        //外循环控制行数,因为行数{                                  //最后一行是单独输出的,所以for (int j = 0; j < WIDTH; j++)//这里i小于高度减一。{                                //内循环控制宽度。if (j == 0||j == WIDTH-1)//如果j等于0和39就说明{                          //到了两边的边框,就输出边框printf("@");           //符号。if (j == WIDTH)          //如果j等于40则就换行,输出{                        //下一行。否则就输出空格*/printf("\n");}}else{printf(" ");}}}

运用一个双重循环,外循环控制行数的切换,内循环控制个数,从第二行开始输出,一直输出到倒数第二行结束。刚才说了,左右边框是在0和39的地方,使用判断语句进行判断是否位于边框地方,如果是就输出边框符号,如果不是就输出空格。位于最后一格输出换行符。
第三步:就是输出最后一行的边框;

for (int i = 0; i < WIDTH; i++){printf("@");}printf(\n);
也可以在宏定义部分进行定义,可以简化代码的输入。
for (int i = 0; i < WIDTH; i++)PRINTF LINE  //上边框for (int i = 1; i < HEIGHT - 1; i++)          //打印左右边框{for (int j = 0; j < WIDTH; j++){if (j == 0 || j == WIDTH - 1){PRINTFif (j == WIDTH - 1)LINE}else EMPTY}}for (int i = 0; i < WIDTH; i++)PRINTF LINE  //下边框
}

2)食物位置函数FoodRand()

思路:需要在地图中随机产生一个位置,用来表示食物的位置,首先考虑怎么将光标移动到指定位置,其次就是如何随机产生。光标移动使用Windows库,随机位置使用time库。
第一步,光标移动go_toxy()函数

void go_toxy(int x,int y)
{/*  COORD是Windows API中定义的一种结构体* typedef struct _COORD /*使用typedef定义新的类型名来代替已有的类型名* {                        这里来代替结构体类型。*/* SHORT X;//短整型* SHORT Y;* } COORD;*  */COORD pos = { x * 2,y };//定义了一个结构体类型变量posHANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);//获得 标准输出的句柄   SetConsoleCursorPosition(output, pos); //设置控制台光标位置
}

第二步,随机产生坐标位置

srand((int)time(0));//srand(time(NULL))表示设置一种随机种子,每次运行都int x = rand() % 27 + 2; 可以保证随机种子不同。*/int y = rand() % 17 + 2;

第三步,先对整个坐标进行判断是否与蛇身重合,如果是则重新产生随机位置,如果不是就继续执行,并且将食物坐标存放在一个链表中,以备后续的使用。

for (int i = 0; i <= 200; i++)//有限循环200次{if (Phead_1->x == x&&Phead_1->y == y)//引用结构体变量x和y是否与随机产生的位置坐标重合{x = rand() % 27 + 2;//如果是则重新产生位置坐标y = rand() % 17 + 2;}else//如果不是则让后一个结点的next域指向前一个结点{Phead_1 = Phead_1->next;}if (Phead_1->next == NULL)//直到后一个结点的指针域为空,就表示循环到最后一个结点了,就结束循环{break;}}Food = (Snakexy*)malloc(sizeof(Snakexy));//开辟新的结点Food->x = x;//将食物的坐标存放到食物链表中去Food->y = y;

3)键盘控制移动函数ControlMove()函数

思路:用键盘的上下左右键来控制蛇的移动。这里使用Get Async Key State的方法。
先介绍Get Async Key State的用法。这个函数就是用来得到某个键的状态,让后判断返回值是否为1,如果是表示这个键处于按下状态。
另一种就是逻辑键与物理键了,键盘输出就属于一种物理键的输入,而鼠标点击就是一种逻辑键了。类似的向GetKeyState,GetKeyboardState等函数就得到的是逻辑键操作。

if (GetAsyncKeyState(VK_UP) && 0x8000)//judege direction{                                                判断方向。if (JudgeDirection == 2)             {}else{
JudgeDirection = 1;}}if (GetAsyncKeyState(VK_DOWN) && 0x8000){if (JudgeDirection == 1){}else{JudgeDirection = 2;}}
if (GetAsyncKeyState(VK_RIGHT) && 0x8000){if (JudgeDirection == 3){}else{JudgeDirection = 4;}}if (GetAsyncKeyState(VK_LEFT) && 0x8000){if (JudgeDirection == 4){}else{JudgeDirection = 3;}}if (GetAsyncKeyState(VK_RETURN) && 0x0D){while (1){if (GetAsyncKeyState(VK_RETURN) && 0x0D){break;}}}

4)移动函数Move()函数

思路:使用链表,消除尾结点,增加头结点,这样就可以实现蛇的移动。运用了一个while循环来不断执行消除尾结点和增加头结点,实现不断移动。
第一步:消除尾结点。

Phead_1 = Phead;/*结构体指针Phead和Phead_1同指向这个链表的头也就是头指针head,因为结构体指针Phead用来存放整个蛇身不进行改变,所以使用Phead_1来代替改变*/while (Phead_1->next->next != NULL)/*Phead_1的next域后的next域{                                     如果不是空,则指向后一个指针域Phead_1 = Phead_1->next;          */}Phead_1->next = NULL;//这是最后一个指针域为空就是到最后的结点for (int i = 0; i < Pause; i++) {}//一个延迟循环ControlMove();//键盘控制移动函数MoveCursor(Phead_1->x, Phead_1->y);//移动到尾结点的数据域printf(“ ”);//输出空格,以实现消除尾结点。
第二步:进行判断方向位置,进行头结点的位置改变Snakebody *Phead_2 = (Snakebody*)malloc(sizeof(Snakebody));
//开辟新结点,定义新结构体指针,创建新的链表。if (*PJ == 1)               //如果JudgeDirection等于1,则表示键盘{                         //输入向上的指令,表示此时蛇向上移动。Phead_2->x = Phead->x;        //则蛇身的x坐标不变,Phead_2->y = Phead->y - 1;    //y坐标向上移动一位}if (*PJ == 2)//向下移动{Phead_2->x = Phead->x;Phead_2->y = Phead->y + 1;}if (*PJ == 3)//向左移动{Phead_2->x = Phead->x - 1;Phead_2->y = Phead->y;}if (*PJ == 4)//向右移动{Phead_2->x = Phead->x + 1;Phead_2->y = Phead->y;}Phead_2->next = Phead;//将前一个的结点赋值给新链表后一个结点Phead = Phead_2;//同时指向同一个链表MoveCursor(Phead_2->x, Phead_2->y);//移动到头结点xy处Printf(“◼”)//输出蛇身符号,表示头

5)蛇身开始函数Isnake()函数

思路:存放整个蛇身,初始化开始蛇身长度为5,打印出蛇身,并存放在蛇身链表中

for (int i = 0; i < 5; i++)//一个for循环循环5次,输出蛇身。{Pbady = (Snakebody*)malloc(sizeof(Snakebody));//开辟蛇身链表Pbady->x = 5 - i;//从5开始,输出蛇身Pbady->y = 5;//y坐标就在5if (Phead == NULL)/*如果蛇身头指针为空{                      则蛇身链表存放蛇身*/Phead = Pbady;}else{end->next = Pbady;//否则就是尾结点就指向蛇身链表}Pbady->next = NULL;是最后的结点为空end = Pbady;}Phead_1 = Phead;while (Phead_1->next != NULL){MoveCursor(Phead_1->x, Phead_1->y);//移动到蛇身位置Printf(“◼”)//输出蛇身符号Phead_1 = Phead_1->next;}

6)判断食物是否被吃到函数Jfood()函数

思路:如果吃到食物就在蛇身链表的尾结点处增加新的结点,依次类推,如果吃到一个分数就加一,如果迟到2个速度也就是难度加一。

 Phead_1 = Phead;/*结构体指针Phead和Phead_1同指向这个链表的头也就是头指针head,因为结构体指针Phead用来存放整个蛇身不进行改变,所以使用Phead_1来代替改变*/if (Phead_1->x == Food->x&&Phead_1->y == Food->y){//如果蛇身头结点指向食物链表,也就是蛇头碰到食物FoodRand();//则产生食物位置JudgeSum += 1;//产生后则难度加一if (JudgeSum == 2)如果难度超过二就说明速度要增加{JudgeSum = 0;Hard += 1;//难度加一Pause -= 20000000;//移动速度减少两千万,原来为两亿。可以增加10个难度}while (Phead_1->next != NULL)//循环后的最后一个结点为空{Phead_1 = Phead_1->next;//则是尾结点重新赋值}Snakebody *S = (Snakebody*)malloc(sizeof(Snakebody));//开辟新结点S->x = Food->x;S->y = Food->y;S->next = NULL;Phead_1->next = S;ControlMove();MoveCursor(Phead_1->x, Phead_1->y);Printf(“◼”);}

7)判断是否碰到墙Jwell()函数

 if (Phead->x == 0 || Phead->x == 29 || Phead->y == 0 || Phead->y == 19){MoveCursor(10, 20);printf("抱歉,你撞到了自己,游戏结束!              ");system("pause>nul");exit(0);

8)判断是否碰到蛇身Jsnake()函数

Phead_1 = Phead->next;while (Phead_1->next != NULL){if ((Phead->x == Phead_1->x) && (Phead->y == Phead_1->y)){MoveCursor(10, 20);printf("抱歉,你撞到了自己,游戏结束!          ");system("pause>nul");exit(0);}Phead_1 = Phead_1->next;}

9)计算分数和难度Showf()函数

 MoveCursor(33, 5);printf("得分:%d", sum);MoveCursor(33, 6);printf("难度:%d", Hard)

;

10)清空存储空间函数

while (Phead->next != NULL){Phead=Phead->next;free(Phead);}free(Phead);

二.代码附录

#include<stdio.h>
#include<time.h>
#include<Windows.h>
#define HEIGHT  20  //设置地图高度
#define WIDTH   40  //设置地图宽度
#define PRINTF  printf("■");
#define LINE    printf("\n");
#define EMPTY   printf("  ");
typedef struct Snakebody//类型定义结构体,蛇的身体
{int x, y;//身体的坐标struct Snakebody *next;//结构指针
}Snakebody;//先来创建保持身体的链表,贪吃蛇的核心代码就是该如何保存蛇的身体
typedef struct Snakexy
{int x;int y;
}Snakexy; //记录食物坐标
int sum = 0;     //计算得分
int JudgeSum = 0;    //判断是否加快
int Hard = 0;     //计算难度
int Pause = 200000000;   //暂停速度(移动速度)
int JudgeDirection = 4;   //判断方向
int * PJ = &JudgeDirection;  //用指针传值判断移动方向
Snakebody *Phead = NULL;  //存储着整个蛇身 不可更改
Snakebody *Phead_1 = NULL;  //指向蛇身
Snakebody *Pbady = NULL;  //创建节点
Snakebody *end = NULL;   //尾节点
Snakexy * Food = NULL;          //保存食物位置
void Front();                   //游戏开始页面1
void Jfood();     //检测是否吃到食物1
void Jwall();     //检测蛇头是否撞墙1
void Jsnake();     //检测蛇头是否撞到蛇身1
void ISnake();     //初始化蛇身1
void DeawMap();     //绘制地图1
void FoodRand();    //生成食物1
void ControlMove();    //控制移动和暂停1
void MoveCursor(int x, int y); //移动光标1
void Move();     //游戏运行1
void Showf();                   //显分数以及难度1
void Free();                    //释放内存
int main()
{Front();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);//绿DeawMap();Showf();SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);// 暗白MoveCursor(44, 10);printf("↑");MoveCursor(41, 11);printf("使用←↓→来控制");MoveCursor(41, 12);printf("蛇的移动,撞墙游");MoveCursor(41, 13);printf("戏结束,每2分增 ");MoveCursor(41, 14);printf("一个难度(速度)");ISnake();FoodRand();MoveCursor(40, 20);Move();return 0;
}
void Front()
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);//设置红色MoveCursor(18, 10);printf(" 贪 吃 蛇 ");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);//设置绿色MoveCursor(18, 12);printf("分析:乾中权");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_BLUE);//设置蓝色MoveCursor(18, 14);printf("QQ:2238265682");MoveCursor(18, 16);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);//设置红色和蓝色相加MoveCursor(18, 18);printf("请等待......");for (int i = 0; i <= 3000000000U; i++){}system("cls");
}
void DeawMap()
{for (int i = 0; i < WIDTH; i++)PRINTF LINE  //上边框for (int i = 1; i < HEIGHT - 1; i++)          //打印左右边框{for (int j = 0; j < WIDTH; j++){if (j == 0 || j == WIDTH - 1){PRINTFif (j == WIDTH - 1)LINE}else EMPTY}}for (int i = 0; i < WIDTH; i++)PRINTF LINE  //下边框
}
void MoveCursor(int x, int y)//设置光标位置(就是输出显示的开始位置)
{/*  COORD是Windows API中定义的一种结构体* typedef struct _COORD* {* SHORT X;* SHORT Y;* } COORD;*  */COORD pos = { x * 2,y };HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);//获得 标准输出的句柄   SetConsoleCursorPosition(output, pos); //设置控制台光标位置
}
void FoodRand()
{srand((int)time(0));int x = rand() % 37 + 2;int y = rand() % 17 + 2;Phead_1 = Phead;for (int i = 0; i <= 200; i++){if (Phead_1->x == x&&Phead_1->y == y){x = rand() % 37 + 2;y = rand() % 17 + 2;}else{Phead_1 = Phead_1->next;}if (Phead_1->next == NULL){break;}}MoveCursor(x, y);PRINTFFood = (Snakexy*)malloc(sizeof(Snakexy));Food->x = x;Food->y = y;MoveCursor(43, 5);printf("  ");Showf();sum++;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);// 蓝
}
void ControlMove()
{if (GetAsyncKeyState(VK_UP) && 0x8000){if (JudgeDirection == 2){}else{JudgeDirection = 1;}}if (GetAsyncKeyState(VK_DOWN) && 0x8000){if (JudgeDirection == 1){}else{JudgeDirection = 2;}}
if (GetAsyncKeyState(VK_RIGHT) && 0x8000){if (JudgeDirection == 3){}else{JudgeDirection = 4;}}if (GetAsyncKeyState(VK_LEFT) && 0x8000){if (JudgeDirection == 4){}else{JudgeDirection = 3;}}if (GetAsyncKeyState(VK_RETURN) && 0x0D){while (1){if (GetAsyncKeyState(VK_RETURN) && 0x0D){break;}}}
}
void ISnake()
{for (int i = 0; i < 5; i++){Pbady = (Snakebody*)malloc(sizeof(Snakebody));Pbady->x = 5 - i;Pbady->y = 5;if (Phead == NULL){Phead = Pbady;}else{end->next = Pbady;}Pbady->next = NULL;end = Pbady;}Phead_1 = Phead;while (Phead_1->next != NULL){MoveCursor(Phead_1->x, Phead_1->y);PRINTFPhead_1 = Phead_1->next;}}
void Move()
{while (1){Phead_1 = Phead;while (Phead_1->next->next != NULL){Phead_1 = Phead_1->next;}Phead_1->next = NULL;for (int i = 0; i < Pause; i++) {}ControlMove();MoveCursor(Phead_1->x, Phead_1->y);EMPTY//上面为消除尾部Snakebody *Phead_2 = (Snakebody*)malloc(sizeof(Snakebody));if (*PJ == 1){Phead_2->x = Phead->x;Phead_2->y = Phead->y - 1;}if (*PJ == 2){Phead_2->x = Phead->x;Phead_2->y = Phead->y + 1;}if (*PJ == 3){Phead_2->x = Phead->x - 1;Phead_2->y = Phead->y;}if (*PJ == 4){Phead_2->x = Phead->x + 1;Phead_2->y = Phead->y;}Phead_2->next = Phead;Phead = Phead_2;MoveCursor(Phead_2->x, Phead_2->y);PRINTFJfood();Jwall();Jsnake();MoveCursor(40, 20);}
}
void Jfood()
{Phead_1 = Phead;if (Phead_1->x == Food->x&&Phead_1->y == Food->y){FoodRand();JudgeSum += 1;if (JudgeSum == 2){JudgeSum = 0;Hard += 1;Pause -= 20000000;}while (Phead_1->next != NULL){Phead_1 = Phead_1->next;}Snakebody *S = (Snakebody*)malloc(sizeof(Snakebody));S->x = Food->x;S->y = Food->y;S->next = NULL;Phead_1->next = S;ControlMove();MoveCursor(Phead_1->x, Phead_1->y);PRINTF}//获取食物的坐标和蛇头做对比
}
void Jwall()
{if (Phead->x == 0 || Phead->x == 39 || Phead->y == 0 || Phead->y == 19){MoveCursor(10, 20);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);//设置红色printf("抱歉,你撞到了自己,游戏结束!              ");system("pause>nul");exit(0);}
}
void Jsnake()
{Phead_1 = Phead->next;while (Phead_1->next != NULL){if ((Phead->x == Phead_1->x) && (Phead->y == Phead_1->y)){MoveCursor(10, 20);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);//设置红色printf("抱歉,你撞到了自己,游戏结束!          ");system("pause>nul");exit(0);}Phead_1 = Phead_1->next;}
}
void Showf()
{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);// 蓝MoveCursor(43, 5);printf("得分:%d", sum);MoveCursor(43, 6);printf("难度:%d", Hard);
}
void Free()
{while (Phead->next != NULL){Phead=Phead->next;free(Phead);}free(Phead);
}

C程序设计,贪吃蛇程序相关推荐

  1. 【python教程入门学习】Python实现自动玩贪吃蛇程序

    这篇文章主要介绍了通过Python实现的简易的自动玩贪吃蛇游戏的小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学一学 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹 ...

  2. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  3. JAVA小程序:一个基于MVC框架的贪吃蛇程序

    学习JAVA也有一段时间了,之前看了翁恺老师的视频,跟着做了一个细胞自动机,粗浅地了解了一点MVC框架的知识,感觉获益匪浅.但是细胞自动机毕竟是跟着视频完成的,有很大程度上都是参考了视频里的代码,没有 ...

  4. 用python写一个贪吃蛇程序

    我可以为您提供一些有关如何使用Python编写贪吃蛇程序的指导.首先,您需要确定您的程序所需的功能,以及游戏的规则和特性.接下来,您可以编写代码来实现这些功能,并使用Python的图形库来绘制游戏界面 ...

  5. 模仿别人的简单贪吃蛇程序

    参考的别人的贪吃蛇程序,只做了少许的更改,惭愧.http://bbs.csdn.net/topics/350080780 #include <stdio.h> #include <s ...

  6. 代码全解:Python实现自动玩贪吃蛇程序

    录 实现效果 代码 实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹骂我,哈哈 ,多人游戏整个自动玩会被骂死~ 代码 没装软件的先安装一下软件,没装模块的安装一下pygame模块. ...

  7. 贪吃蛇程序(金沙滩51单片机)-启动篇-1(含演示GIF)

    点击获取工程源码 首先声明:本代码中不含中断程序(因为当时没学,后来觉得51过于落伍,故没有深学),以下的代码只是挑出其中主要的进行细讲,源码点击上方获取. 我们将启动贪吃蛇分为以下5个步骤: 1.初 ...

  8. c语言程序设计贪吃蛇需求分析,c语言贪吃蛇课程设计报告.docx

    C?语言课程设计报告 C语言课程设计报告 贪 吃 蛇 专业 学生姓名 班级 学号 完成日期 C?语言课程设计报告 一.游戏规则需求 1.?在打开程序后,出现选择界面,里面包含难度选择,其中难度选择能够 ...

  9. 贪吃蛇程序不要白不要,一个赞就够了

    #include<stdio.h> #include<conio.h> #include<windows.h> #include<time.h> #de ...

  10. html+JavaScript 实现贪吃蛇程序

    <!doctype html> <html> <head> <!-- 当前文档的字符集编码GBK,UTF-8,GB2312(GBK的子集)--> < ...

最新文章

  1. bzoj1079: [SCOI2008]着色方案(DP)
  2. 单分子实时测序技术的原理与应用
  3. python导入xlsx文件-python怎么用pd导入xlsx
  4. fancybox关闭弹出窗体parent.$.fancybox.close();
  5. 【模板】匈牙利算法 二分图最大匹配题模板
  6. 黑客大佬:我是如何让50个文件一起骗过AI安防系统的?
  7. mysql中的replication_mysql中replication的相关问题总结
  8. php 打乱数组顺序_PHP实现大转盘抽奖算法
  9. endp 汇编start_常见汇编代码
  10. SQL Server 数据文件的页面分部情况
  11. WebDriver使用入门
  12. 第一课.axis配置和写法入门
  13. 天思ERP软件常见问题解决方案
  14. 读书笔记之财报就像一本故事书
  15. 直角三角形 纪中 1385 数学_斜率
  16. 【运维开发】Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群
  17. echart4.0 map支持dataset实例
  18. unity3D多点测量、多边形面积测量
  19. 服务器上txt文件编辑器,网站后台文本编辑器使用方法
  20. [Pytorch函数].repeat()

热门文章

  1. 【Qt for Python官方教程】使用pyside6-rcc引入.qrc文件
  2. python 购物车总额_python之购物车
  3. SPSS软件做方差分析
  4. 8本新书,为你的2020年管理之路指点迷津
  5. 怎么画单极交流放大电路波形图_集成电路的种类
  6. 网络协议(4) 详解 TCPIP 协议
  7. iOS高阶程序员必修——汇编
  8. Sublime好看字体
  9. 输出UTC时间和北京时间
  10. 阿里巴巴Java面试题、笔试题(含答案)