jQuery鼠标指针特效

链表-->贪吃蛇--------TO COPY

  1 /*
  2  贪吃蛇 --->链表 
  3 */
  4 
  5 #include "stdio.h"
  6 #include "string.h"
  7 #include "windows.h" //windows编程头文件
  8 #include "time.h"
  9 #include "conio.h"  //控制台输入输出文件
 10 #include "stdbool.h"
 11 
 12 #define up 'w'
 13 #define down 's'
 14 #define right 'd'
 15 #define left 'a'
 16 
 17 void welcome();               // 开始界面
 18 void Finish();                // 结束界面
 19 void creatgraph();            // 围墙打印
 20 void gotoxy(int x, int y);    // 光标跳转,横为X 0,1,2..
 21 void gotoprint(int x, int y); // 跳转打印
 22 void gotodelete(int x, int y);// 跳转删除
 23 void creatfood();             // 食物产生
 24 int ClickControl();           // 获取键盘信号
 25 int Judge();                  // 游戏结束判断
 26 void MovingBody();            // 蛇的移动
 27 void Eating();                // 蛇吃到东西后的操作(伸长)
 28 void ChangeBody(int x, int y); // 蛇的坐标变换
 29 
 30 /*全局变量 + 预处理:*/
 31 typedef struct Snakes {
 32     int x;
 33     int y;
 34     struct Snakes* next;
 35 } snake;
 36 
 37 snake* head;    // 声明蛇头指针
 38 
 39 // 申明并定义食物
 40 struct Food {
 41     int x;
 42     int y;
 43 } food;
 44 
 45 char name[20];  // 保存用户名 有兴趣可以制作登录系统
 46 int score = 0;  // 分数
 47 char click = 1; // 记录敲下的键盘按键
 48 int speed;      // 速度 其实是延迟的毫秒数
 49 
 50 /************************************************************/
 51 
 52 int main() {
 53     system("color 0B"); // 设置控制台字体颜色
 54     welcome();          // 欢迎界面
 55     creatgraph();       // 创建地图
 56     creatfood();        // 新建食物
 57     // 捕获鼠标按键 ClickControl
 58     if (ClickControl() == 0) return 0;
 59     return 0;
 60 }
 61 
 62 /**********************************************************/
 63 void welcome() {
 64     system("mode con cols=100 lines=40  "); //cols为控制台的宽度,lines则代表控制台的高度。
 65     gotoxy(15, 10);
 66     printf("/**********************************************/");
 67     gotoxy(15, 20);
 68     printf("/**********************************************/");
 69     gotoxy(20, 13);
 70     printf("WELCOME TO THE GAME OF RETRO SNAKE");
 71     gotoxy(14, 16);
 72     printf("请在英文输入法中操作,反向移动等同于吃到自己,wasd控制p暂停");
 73     gotoxy(20, 18);
 74     printf("PLEASE ENTER YOUR NAME:");
 75     scanf_s("%s", &name, 20);
 76     system("cls");
 77 }
 78 
 79 /**********************************************************/
 80 void creatgraph() {
 81     int i;
 82     /*
 83     注意这里横坐标是每次+2 因为控制台字符宽高比为1:2
 84     */
 85     for (i = 0; i < 58; i += 2) {
 86         gotoprint(i, 0);
 87         gotoprint(i, 26);
 88     }
 89     for (i = 1; i < 26; i++) {
 90         gotoprint(0, i);
 91         gotoprint(56, i);
 92     }
 93     gotoxy(63, 10);
 94     printf("hello %s,Welcome To Play", name);
 95     gotoxy(63, 15);
 96     printf("Your Score Is:%d    = ̄ω ̄= ", score);
 97     gotoxy(63, 20);
 98     printf("This Game Is Created By VITO--->TO COPY");
 99     head = (snake*)malloc(sizeof(snake));
100     snake* p = (snake*)malloc(sizeof(snake));
101     snake* q = (snake*)malloc(sizeof(snake));
102     head->x = 16;
103     head->y = 15;
104     p->x = 16;
105     p->y = 16;
106     q->x = 16;
107     q->y = 17;
108     head->next = p;
109     p->next = q;
110     q->next = NULL;
111 }
112 /**********************************************************/
113 void gotoxy(int x, int y) {
114     // 更新光标位置
115     COORD pos;
116     HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
117     pos.X = x;
118     pos.Y = y;
119     SetConsoleCursorPosition(hOutput, pos);
120     // 隐藏光标
121     CONSOLE_CURSOR_INFO cursor;
122     cursor.bVisible = FALSE;
123     cursor.dwSize = sizeof(cursor);
124     SetConsoleCursorInfo(hOutput, &cursor);
125 }
126 
127 /**********************************************************/
128 void gotoprint(int x, int y) {
129     gotoxy(x, y);
130     printf("");
131 }
132 
133 /**********************************************************/
134 void gotodelete(int x, int y) {
135     gotoxy(x, y);
136     printf("  ");
137 }
138 
139 /**********************************************************/
140 void creatfood() {
141     // 随机产生一个食物
142     bool flag = false;
143     while (!flag) {
144         flag = true;
145         srand((int)time(NULL));
146         food.y = rand() % (25 - 1 + 1) + 1;
147         food.x = rand() % (54 - 2 + 1) + 2;
148         if (food.x % 2 != 0) {
149             food.x = food.x + 1;
150         }
151         snake* judge = head;
152         while (1) { //遍历排除蛇身重复
153             if (judge->next == NULL) break;
154             if (food.x == judge->x && food.y == judge->y) {
155                 flag = false;
156             }
157             judge = judge->next;
158         }
159     }
160     gotoxy(food.x, food.y);
161     printf("");
162 }
163 
164 /**********************************************************/
165 // 捕获鼠标 游戏主循环
166 int ClickControl() {
167     char c;
168     while (1) {
169         if (Judge() == 0) return 0;
170         if (_kbhit()) {
171             click = _getch();
172         }
173         MovingBody();
174         Eating();
175     }
176     return 1;
177 }
178 
179 /**********************************************************/
180 void MovingBody() {
181     int x = head->x, y = head->y;
182     snake* p = head;
183     // 通过先清空后打印实现动画效果
184     while (p->next != NULL) {
185         p = p->next;
186     }
187     gotodelete(p->x, p->y); // 消除尾节点
188     switch (click) {
189         case up:
190             y -= 1;
191             break;
192         case down:
193             y += 1;
194             break;
195         case left:
196             x -= 2;
197             break;
198         case right:
199             x += 2;
200             break;
201         default:
202             break;
203     }
204     if (x != head->x || y != head->y) {
205         // 改变坐标时更新 暂停游戏停止更新蛇
206         ChangeBody(x, y);
207     }
208     p = head;
209     // 打印蛇头
210     gotoprint(p->x, p->y);
211     // 蛇速度控制
212     int count = score / 10;
213     if (count <= 10) speed = 150;
214     else if (count > 10 && count <= 20) speed = 100;
215     else if (count > 20 && count <= 40) speed = 50;
216     else speed = 10;
217     Sleep(speed);
218 }
219 
220 /**********************************************************/
221 // 吃到食物处理 添加一个尾巴
222 void Eating() {
223     if (head->x == food.x && head->y == food.y) {
224         creatfood();
225         snake* _new = (snake*)malloc(sizeof(snake));
226         snake* p;
227         p = head;
228         while (1) {
229             if (p->next == NULL) break;
230             p = p->next;
231         }
232         p->next = _new;
233         _new->next = NULL;
234         score += 10;
235         gotoxy(77, 15);
236         printf("%d", score);
237     }
238 }
239 
240 /**********************************************************/
241 // 更新蛇体坐标 只需要消除尾结点 然后把新坐标结点置为头结点即可
242 void ChangeBody(int x, int y) {
243     snake* p = head;
244     while (p->next->next != NULL) {
245         p = p->next;
246     }
247     free(p->next);
248     p->next = NULL;
249     snake* new_head = (snake*)malloc(sizeof(snake));
250     new_head->x = x;
251     new_head->y = y;
252     new_head->next = head;
253     head = new_head;
254 }
255 
256 /**********************************************************/
257 // 判断是否游戏结束
258 int Judge() {
259     if (head->x == 0 || head->x == 56 || head->y == 0 || head->y == 26) {
260         Finish();
261         return 0;
262     }
263     snake* p = head->next;
264     while (1) {
265         if (p == NULL) break;
266         if (head->x == p->x && head->y == p->y) {
267             Finish();
268             return 0;
269         }
270         p = p->next;
271     }
272     return 1;
273 }
274 
275 /**********************************************************/
276 void Finish() {
277     system("cls");
278     gotoxy(15, 10);
279     printf("/**********************************************/");
280     gotoxy(15, 20);
281     printf("/**********************************************/");
282     gotoxy(18, 14);
283     printf("GAME   OVER      o(* ̄▽ ̄*)o");
284     gotoxy(20, 16);
285     printf("Your Score is %d    hiahiahia", score);
286     gotoxy(18, 18);
287     printf("还不错哦,     继续努力O(∩_∩)O");
288     gotoxy(0, 27);
289     // 释放空间
290     snake* p = head, * q;
291     while (p != NULL) {
292         q = p->next;
293         free(p);
294         p = q;
295     }
296     system("pause");
297 }

 


 

#include "stdlib.h"
#include "stdio.h"

//快速排序和冒泡排序
int numbers [8]= {1000,99,2,44,256,789,3,9};
int sz = sizeof(numbers)/sizeof(numbers[0]);
int i,j,t;

void buddleSort(int arr[],int arr_sz);
void swap(int *x, int *y);
void printfArr(int arr[],int x);
void quick_sort_recursive(int arr[], int start, int end);
void quick_sort(int arr[], int len);
int main() {
    //buddleSort(numbers,sz);
    quick_sort(numbers,sz);
    printfArr(numbers,sz);
    return 0;
}

//冒泡排序
void buddleSort(int arr[],int arr_sz) {
    for(i = 0; i< arr_sz-1; i++) { // n个数 n-1趟
        for(j=0; j< arr_sz-i-1; j++) {
            if(arr[j]>arr[j+1]) {
                t = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = t;
            }
        }
    }
}

//&代表取x地址,*代表指针运算,*&x和x在引用时是等价的.*和&是互逆运算.
//int *a = &b; 是一个返回值为int型指针的函数的声明
void swap(int *x, int *y) {
    int t = *x;
    *x = *y;
    *y = t;
}
//-- 去重 : 判断a[i] 与a[i-1]的数据是否相同,相同则不输出,不同则输出
//快速排序
void quick_sort_recursive(int arr[], int start, int end) {
    if (start >= end)
        return;
    int mid = arr[end];
    int left = start, right = end - 1;
    while (left < right) {
        while (arr[left] < mid && left < right)
            left++;
        while (arr[right] >= mid && left < right)
            right--;
        swap(&arr[left], &arr[right]);
    }
    //交换基准值
    if (arr[left] >= arr[end])
        swap(&arr[left], &arr[end]);
    else
        left++;
    //递归
    if (left)
        quick_sort_recursive(arr, start, left - 1);
    quick_sort_recursive(arr, left + 1, end);
}

void quick_sort(int arr[], int len) {
    quick_sort_recursive(arr, 0, len - 1);
}

void printfArr(int arr[],int x) {
    for(i =0 ; i<x; i++) {
        printf("%d-->",arr[i]);
    }

 

posted @ 2022-02-28 16:33  僵小七  阅读(35)  评论(0编辑  收藏  举报