2005098 发表于 2021-4-8 16:11

收下来了,谢谢分享了~

weng560 发表于 2021-4-8 17:03

感谢楼主分享

min 发表于 2021-4-12 21:45

量化交易系统实战课【完结】

chenhuanan 发表于 2021-4-14 16:42

66666666666666

dawei 发表于 2021-4-15 18:29

666666666666666666666666666

limengran 发表于 2021-4-15 19:17

量化交易系统实战课【完结】 [修改]

abc709394 发表于 2021-4-22 15:28

6666666666666666

niren306 发表于 2021-4-25 21:05

6666666666666666666666666666666666666

linksnow 发表于 2021-4-26 09:16

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <windows.h>
#include <conio.h>
#define WIDE60
#define HIGH20
//1 设置地图范围(边界) 宽 高
//2 初始化蛇初始化食物
//3 将蛇和食物显示在屏幕上
//4 蛇的移动(通过wasd按键控制蛇的移动方向)
/*
        a> 蛇碰到墙
        b> 蛇碰到蛇的身体
        c> 蛇碰到障碍物
        d> 蛇碰到食物( 蛇的身体增长一节,原食物消失,生成新的食物,增加分数)

*/
//5 蛇的死亡 积分

typedef struct _body
{
        int x;
        int y;

}BODY;
typedef struct snake
{
        BODY list;//身体.身体的每一节坐标都是BODY类型
        int size;//蛇的身体大小
        BODY food;//食物的坐标
        COORD coord;//光标的位置信息
        int dx;//蛇x轴移动的方向
        int dy;//蛇y轴移动的方向
        int score;//得分
        BODY tail;
}SNAKE;

void init_ui()
{
        for (int i = 0; i <HIGH;i++ )
        {

                for (int j = 0; j < WIDE; j++)
                {
                        printf("#");
               
                }
                printf("\n");
       
        }

}
void init_food(SNAKE*snake)
{
        srand(time(NULL));//设置随机数种子
        //初始化食物坐标
        snake->food.x =rand() % WIDE;
        snake->food.y = rand() % HIGH;
}
void init_snake(SNAKE*snake)
{
        //初始化蛇头坐标
        snake->list.x = WIDE / 2;
        snake->list.y = HIGH / 2;
        //初始化蛇尾坐标
        snake->list.x = WIDE / 2-1;
        snake->list.y = HIGH / 2;
        //初始化蛇的身体大小
        snake->size = 2;
        //初始化食物的坐标
        init_food(snake);
        //初始化蛇的移动方向
        snake->dx = 1;
        snake->dy = 0;
        //初始化分数
        snake->score = 0;

}
void show_ui(SNAKE*snake)
{
        //显示蛇 注意: 每次显示蛇或食物,都要设置显示的位置,(光标的位置)
        for (int i = 0; i < snake->size; i++)
        {
                snake->coord.X = snake->list.x;
                snake->coord.Y = snake->list.y;
                SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord);
                if (0 == i)
                {
                        printf("@");
                }
                else
                {
                        printf("*");
                }
       
        }
        //显示食物
        snake->coord.X = snake->food.x;
        snake->coord.Y = snake->food.y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord);
        printf("#");
        //将原来尾巴的位置显示为空格
        snake->coord.X = snake->tail.x;
        snake->coord.Y = snake->tail.y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord);
        printf(" ");
}
void move_snake(SNAKE*snake)
{
        //记录尾巴的坐标
        snake->tail.x = snake->list.x;
        snake->tail.y = snake->list.y;
        //更新蛇的身体坐标,除蛇头
        for (int i = snake->size - 1; i > 0; i--)
        {
                snake->list = snake->list;//将数组的前一个元素的坐标给后一节
        }
        //更新蛇头

        snake->list.x += snake->dx;
        snake->list.y += snake->dy;

}
void control_snake(SNAKE*snake)
{
        charkey=0;
        while (_kbhit()) //判断是否按下按键,按下不等于0
        {
                key = _getch();
        }
        switch (key)
        {
        case 'a':
                snake->dx = -1;
                snake->dy = 0;
                break;
        case 'w':
                snake->dx = 0;
                snake->dy = -1;
                break;
        case 's':
                snake->dx = 0;
                snake->dy = 1;
                break;
        case 'd':
                snake->dx = 1;
                snake->dy = 0;
                break;
        }

}
void game_end(SNAKE*snake)
{
        snake->coord.X = 25;
        snake->coord.Y = 25;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), snake->coord);
        printf("游戏结束 得分为%d\n",snake->score);
        Sleep(3000);
        exit(0);//退出进程

       
}
//咬到自己
void snake_eat_body(SNAKE*snake)
{
        //如果蛇头和蛇的身体的任意一节身体坐标相同,则吃到自己身体
        for (int i = 1; i < snake->size; i++)
        {
                if (snake->list.x == snake->list.x &&
                        snake->list.y == snake->list.y)
                {
                        game_end(snake);
               
                }
               
        }

}
void snake_eat_food(SNAKE*snake)
{
        //如果蛇头和食物的坐标重合.则吃到了食物
        if (snake->list.x == snake->food.x &&
                snake->list.y == snake->food.y)
        {
               
                //原食物消失,生成新的食物
                init_food(snake);
                //蛇的身体增长一节
                snake->size++;
                //分数增加if()
                snake->score += 10;
       
        }

}
void init_wall()
{
        for (int i = 0; i <= HIGH; i++)
        {
                for (int j = 0; j <= WIDE; j++)
                {
                        if (i == HIGH || j == WIDE)
                        {
                                printf("+");
                        }
                        else
                        {
                                printf(" ");
                        }

                }
                printf("\n");
        }
}
void start_game(SNAKE*snake)
{
        while ( snake->list.x <60&& snake->list.x >= 0 &&
                snake->list.y <20 && snake->list.y >=0)
        {
                //控制蛇的方向
                control_snake(snake);
                //更新蛇的坐标
                move_snake(snake);
                //蛇移动
                //system("cls");//清屏
                //init_wall();
                show_ui(snake);
                //蛇是否碰到自己
                snake_eat_body(snake);
                //蛇是否碰到食物-(碰到食物,原食物消失,产生新的食物)
                snake_eat_food(snake);
                Sleep(100);//延时0.5s
        }
        game_end(snake);
       
}

void hide_cur()
{

        //隐藏控制台光标
        CONSOLE_CURSOR_INFOcci;
        cci.dwSize = sizeof(cci);
        cci.bVisible = FALSE;
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
}
int main()
{
        hide_cur();
        //init_ui();
        init_wall();
        //申请蛇的结构体
        SNAKE*snake = (SNAKE*)malloc(sizeof(SNAKE));
        init_snake(snake);//初始化蛇和食物
        show_ui(snake);//显示界面信息
        start_game(snake);//开始游戏
       
        system("pause");
        return 0;
}

mccharlie 发表于 2021-4-27 19:39


量化交易系统实战课【完结】
页: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19
查看完整版本: 均线100分:量化交易系统实战课【完结】