瑞客论坛

 找回密码
 立即注册
楼主: wf888888

均线100分:量化交易系统实战课【完结】

  [复制链接]

金币289  第4621名

0

主题

89

回帖

777

积分

高级会员

Rank: 4

威望
218
贡献
270
热心值
0
金币
289
注册时间
2021-4-6
发表于 2021-4-8 16:11 | 显示全部楼层
收下来了,谢谢分享了~
回复

使用道具 举报

金币380  第3798名

0

主题

76

回帖

523

积分

高级会员

Rank: 4

威望
52
贡献
91
热心值
0
金币
380
注册时间
2019-10-22
发表于 2021-4-8 17:03 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

金币2036  第857名

0

主题

663

回帖

5556

积分

永久会员

Rank: 8Rank: 8

威望
1730
贡献
1790
热心值
0
金币
2036
注册时间
2019-10-30
发表于 2021-4-12 21:45 | 显示全部楼层
量化交易系统实战课【完结】
回复

使用道具 举报

金币546  第2937名

2

主题

156

回帖

2998

积分

永久会员

Rank: 8Rank: 8

威望
1256
贡献
1196
热心值
0
金币
546
注册时间
2020-12-15
发表于 2021-4-14 16:42 | 显示全部楼层
66666666666666
回复

使用道具 举报

金币55  第12963名

0

主题

172

回帖

92

积分

注册会员

Rank: 2

威望
25
贡献
12
热心值
0
金币
55
注册时间
2020-3-22
发表于 2021-4-15 18:29 | 显示全部楼层
666666666666666666666666666
回复

使用道具 举报

金币2  第43442名

1

主题

539

回帖

323

积分

中级会员

Rank: 3Rank: 3

威望
147
贡献
174
热心值
0
金币
2
注册时间
2020-2-20
发表于 2021-4-15 19:17 | 显示全部楼层
量化交易系统实战课【完结】 [修改]
回复

使用道具 举报

金币3920  第389名

2

主题

1520

回帖

9174

积分

论坛元老

Rank: 8Rank: 8

威望
2434
贡献
2820
热心值
0
金币
3920
注册时间
2019-6-26
发表于 2021-4-22 15:28 | 显示全部楼层
6666666666666666
回复

使用道具 举报

金币1484  第1186名

1

主题

1086

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

威望
4350
贡献
5124
热心值
0
金币
1484
注册时间
2020-5-27
发表于 2021-4-25 21:05 | 显示全部楼层
6666666666666666666666666666666666666
回复

使用道具 举报

金币10  第20651名

0

主题

137

回帖

165

积分

注册会员

Rank: 2

威望
65
贡献
90
热心值
0
金币
10
注册时间
2021-4-24
发表于 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 WIDE  60
#define HIGH  20
//1 设置地图范围(边界) 宽 高
//2 初始化蛇  初始化食物
//3 将蛇和食物显示在屏幕上
//4 蛇的移动(通过wasd按键控制蛇的移动方向)
/*
        a> 蛇碰到墙
        b> 蛇碰到蛇的身体
        c> 蛇碰到障碍物
        d> 蛇碰到食物( 蛇的身体增长一节,原食物消失,生成新的食物,增加分数)

*/
//5 蛇的死亡 积分

typedef struct _body
{
        int x;
        int y;

}BODY;
typedef struct snake
{
        BODY list[WIDE*HIGH];//身体.身体的每一节坐标都是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[0].x = WIDE / 2;
        snake->list[0].y = HIGH / 2;
        //初始化蛇尾坐标
        snake->list[1].x = WIDE / 2-1;
        snake->list[1].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[i].x;
                snake->coord.Y = snake->list[i].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[snake->size - 1].x;
        snake->tail.y = snake->list[snake->size - 1].y;
        //更新蛇的身体坐标,除蛇头
        for (int i = snake->size - 1; i > 0; i--)
        {
                snake->list[i] = snake->list[i-1];//将数组的前一个元素的坐标给后一节
        }
        //更新蛇头

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

}
void control_snake(SNAKE  *snake)
{
        char  key=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[0].x == snake->list[i].x &&
                        snake->list[0].y == snake->list[i].y)
                {
                        game_end(snake);
               
                }
               
        }

}
void snake_eat_food(SNAKE  *snake)
{
        //如果蛇头和食物的坐标重合.则吃到了食物
        if (snake->list[0].x == snake->food.x &&
                snake->list[0].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[0].x <60  && snake->list[0].x >= 0 &&
                snake->list[0].y <20 && snake->list[0].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_INFO  cci;
        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;
}
回复

使用道具 举报

金币120  第8227名

0

主题

20

回帖

120

积分

注册会员

Rank: 2

威望
0
贡献
0
热心值
0
金币
120
注册时间
2021-4-27
发表于 2021-4-27 19:39 | 显示全部楼层

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|瑞客论坛 |网站地图

GMT+8, 2024-12-23 15:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表