diff --git a/c2_1.1.4 b/c2_1.1.4 new file mode 100644 index 00000000..6c8f7d87 --- /dev/null +++ b/c2_1.1.4 @@ -0,0 +1,20 @@ +#include +void printf_X(int a); +void main() +{ + int i, j; + for (i = 1; i <= 9; i++) + { + printf_X(i); + printf("\n"); + } +} + +void printf_X(int a) +{ + int j; + for (j = 1; j <= a; j++) + { + printf("%dX%d=%d\t", a, j, a*j); + } +} diff --git a/practices/ c/ level0/c0.c b/practices/ c/ level0/c0.c new file mode 100644 index 00000000..18973113 --- /dev/null +++ b/practices/ c/ level0/c0.c @@ -0,0 +1,5 @@ +#include +void main() +{ + printf("Hello,world!我是陈叔炜"); +} diff --git a/practices/ c/ level0/c1_1.c b/practices/ c/ level0/c1_1.c new file mode 100644 index 00000000..e18c1601 --- /dev/null +++ b/practices/ c/ level0/c1_1.c @@ -0,0 +1,21 @@ +#include +int main() +{ + int a; + printf("请输入一个数"); + scanf("%d", &a); + if (a > 0) + { + printf("这个数是正数"); + } + else if (a != 0) + { + printf("这个数是负数"); + } + else printf("这个数既不是正数也不是负数"); + if (0 == a % 2) + { + printf("这个数是偶数"); + } + else printf("这个数是奇数"); +} diff --git a/practices/ c/ level0/c1_2.c b/practices/ c/ level0/c1_2.c new file mode 100644 index 00000000..2bf8a3af --- /dev/null +++ b/practices/ c/ level0/c1_2.c @@ -0,0 +1,13 @@ +#include +int main() +{ + int a; + printf("请输入一个数"); + scanf("%d", &a); + if (0 == a % 13) + { + printf("这个数是13的倍数"); + } + else + printf("这个数不是13的倍数"); +} diff --git a/practices/ c/ level0/c1_3.c b/practices/ c/ level0/c1_3.c new file mode 100644 index 00000000..782d1c66 --- /dev/null +++ b/practices/ c/ level0/c1_3.c @@ -0,0 +1,11 @@ +#include +int main() +{ + int a; + printf("请输入年数"); + scanf("%d", &a); + if ((0 == a % 4 && 0 != a % 100) || 0 == a % 400) + printf("这一年是闰年"); + else + printf("这一年不是闰年"); +} diff --git a/practices/ c/ level0/c1_5.c b/practices/ c/ level0/c1_5.c new file mode 100644 index 00000000..fdf52239 --- /dev/null +++ b/practices/ c/ level0/c1_5.c @@ -0,0 +1,20 @@ +#include +int main() +{ + int a, b, c; + printf("请输入三个数"); + scanf("%d%d%d", &a, &b, &c); + if (a > b) + { + if (c > a) + a = c; + } + else + { + if (b > c) + a = b; + else + a = c; + } + printf("这三个数中最大的是%d", a); +} diff --git a/practices/ c/ level0/c1_6.c b/practices/ c/ level0/c1_6.c new file mode 100644 index 00000000..41802e0c --- /dev/null +++ b/practices/ c/ level0/c1_6.c @@ -0,0 +1,17 @@ +#include +int main() +{ + int i,n,max_number=0; + printf("请输入要比较的数的个数"); + scanf("%d", &n); + int number; + for (i = 0; i < n; i++) + { + scanf("%d", &number); + if (number > max_number) + { + max_number = number; + } + } + printf("这n个数中最大的数是%d", max_number); +} diff --git a/practices/ c/ level0/c2_1.1.1.c b/practices/ c/ level0/c2_1.1.1.c new file mode 100644 index 00000000..d12917cc --- /dev/null +++ b/practices/ c/ level0/c2_1.1.1.c @@ -0,0 +1,12 @@ +#include +int main() +{ + int i; + for (i = 2; i <= 200; i++) + { + if (0 == i % 2) + { + printf("%d\t", i); + } + } +} diff --git a/practices/ c/ level0/c2_1.1.2.c b/practices/ c/ level0/c2_1.1.2.c new file mode 100644 index 00000000..5c68dfb3 --- /dev/null +++ b/practices/ c/ level0/c2_1.1.2.c @@ -0,0 +1,12 @@ +#include +int main() +{ + int i; + for (i = 1; i <= 100; i++) + { + if ((0 == i % 3) && (0 != i % 5)) + { + printf("%d\t", i); + } + } +} diff --git a/practices/ c/ level0/c2_1.1.3.c b/practices/ c/ level0/c2_1.1.3.c new file mode 100644 index 00000000..e3408c8e --- /dev/null +++ b/practices/ c/ level0/c2_1.1.3.c @@ -0,0 +1,13 @@ +#include +void main() +{ + int i, sum = 0; + for (i = 1; i <= 100; i++) + { + if ((0 == i % 7) || (7 == i % 10)) + { + printf("%d\t", i); + sum += i; + } + } +} diff --git a/practices/ c/ level0/c2_1.c b/practices/ c/ level0/c2_1.c new file mode 100644 index 00000000..7013ee4a --- /dev/null +++ b/practices/ c/ level0/c2_1.c @@ -0,0 +1,11 @@ +#include +#include +void main() +{ + int i,t=50; + for (i = 0; i < 10000; i++) + { + printf("你好"); + Sleep(t); + } +} diff --git a/practices/ c/ level0/c2_2.c b/practices/ c/ level0/c2_2.c new file mode 100644 index 00000000..14ac34e9 --- /dev/null +++ b/practices/ c/ level0/c2_2.c @@ -0,0 +1,13 @@ +#include +void main() +{ + system("color 0a"); + while (1) + { + printf("0 1"); + } +} +//结果分析 +//结果:屏幕无限制打印绿色字体的‘0’、‘1’ +//system ("color 0a")使字体变绿 +//while 语句条件表达式为1,代表真,无限执行循环“打印绿色字体0 1” diff --git a/practices/ c/ level1/ font-font- p10_pushBoxes/ font/pushbox.c b/practices/ c/ level1/ font-font- p10_pushBoxes/ font/pushbox.c new file mode 100644 index 00000000..a95facaa --- /dev/null +++ b/practices/ c/ level1/ font-font- p10_pushBoxes/ font/pushbox.c @@ -0,0 +1,117 @@ +#include +#include +#include +#define SIZE 9 +int intmaze[SIZE][SIZE]; +void print_map(); +void scanfmap(); +void move(int nn); +void main() +{ + scanfmap(); + move(SIZE); + system("pause"); +} + +void scanfmap() +{ + FILE *p; + p =fopen("level1.txt", "r"); + for (int i = 0; i < SIZE; i++) { + for (int j= 0; j < SIZE; j++) { + fscanf(p, "%d", &intmaze[i][j]); + } + } + fclose(p); +} +void print_map() +{ + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + if (intmaze[i][j] == 0) { + intmaze[i][j] = ' '; //空格 + }if (intmaze[i][j] == 1) { + intmaze[i][j] = '*'; //墙壁 + }if (intmaze[i][j] == 9) { + intmaze[i][j] = 'P'; //人 + }if (intmaze[i][j]== 2) { + intmaze[i][j] = '@'; //目的地; + }if (intmaze[i][j]== 3) { + intmaze[i][j] = '#'; //箱子 + } + } + } + for (int i = 0; i < SIZE; i++) { + for (int j = 0; j < SIZE; j++) { + printf("%c", intmaze[i][j]); + } + printf("\n"); + } +} + +void move(int nn) +{ + int x = 4, y = 4; + char walk; + while (1) { + print_map(); + walk = _getch(); + if (walk == 'w') { + if ((intmaze[x - 1][y] == ' ') && (x>0)) { + intmaze[x - 1][y] = 9; + intmaze[x][y] = 0; + x--; + } + else if ((intmaze[x - 1][y] == '#') && (intmaze[x - 2][y] != '*') && (x > 1)) { + intmaze[x - 1][y] = 9; + intmaze[x - 2][y] = 3; + intmaze[x][y] = 0; + x--; + } + } + if (walk == 's') { + if ((intmaze[x + 1][y] == ' ') && (x < nn - 1)) { + intmaze[x + 1][y] = 9; + intmaze[x][y] = 0; + x++; + } + else if ((intmaze[x + 1][y] == '#') && (intmaze[x + 2][y] != '*') && (x < nn - 2)) { + intmaze[x + 1][y] = 9; + intmaze[x + 2][y] = 3; + intmaze[x][y] = 0; + x++; + } + } + if (walk == 'a'){ + if ((intmaze[x][y - 1] == ' ') && (y > 0)) { + intmaze[x][y - 1] = 9; + intmaze[x][y] = 0; + y--; + } + else if ((intmaze[x][y - 1] == '#') && (intmaze[x][y - 2] != '*') && (y>1)) { + intmaze[x][y - 1] = 9; + intmaze[x][y - 2] = 3; + intmaze[x][y] = 0; + y--; + } + } + if (walk == 'd') { + if ((intmaze[x][y + 1] == ' ') && (y < nn - 1)) { + intmaze[x][y + 1] = 9; + intmaze[x][y] = 0; + y++; + } + else if ((walk == 'd') && (intmaze[x][y + 1] == '#') && (intmaze[x][y + 2] != '*') && (y < nn - 2)) { + intmaze[x][y + 1] = 9; + intmaze[x][y + 2] = 3; + intmaze[x][y] = 0; + y++; + } + } + system("cls"); + if (intmaze[1][4] != '@' && intmaze[4][1] != '@' && intmaze[7][4] != '@' && intmaze[4][7] != '@') { + printf("YOU WIN\n"); + break; + } + } +} diff --git a/practices/ c/ level1/ p01_runningLetter/runningletter.c b/practices/ c/ level1/ p01_runningLetter/runningletter.c new file mode 100644 index 00000000..f316aad4 --- /dev/null +++ b/practices/ c/ level1/ p01_runningLetter/runningletter.c @@ -0,0 +1,26 @@ +#include +#include +int for_back_word(int a); +const int n = 120; +int main() +{ + int i; + for (i = 1; i < n; i++) { + for_back_word(i); + } + for (i; i > 0; i--) { + for_back_word(i); + } + return 0; +} + +int for_back_word(int a) +{ + int j,m=100; + for (j = 1; j < a; j++) { + printf(" "); + } + printf("R"); + Sleep(m); + system("cls"); +} diff --git a/practices/ c/ level1/ p02_isPrime/isprime.c b/practices/ c/ level1/ p02_isPrime/isprime.c new file mode 100644 index 00000000..c759029f --- /dev/null +++ b/practices/ c/ level1/ p02_isPrime/isprime.c @@ -0,0 +1,35 @@ +#include +#include +int is_prime(int a); +int main() +{ + int x; + scanf_s("%d", &x); + if (is_prime(x)) { + printf("%d is a prime", x); + } + else { + printf("%d is not a prime", x); + } + return 0; +} + +int is_prime(int a) +{ + int k; + if (a == 1) { + return 0; + }if (a == 2) { + return 1; + }if (a > 2) { + for (k = 2; k <= sqrt(a); k++) { + if (a%k == 0) { + return 0; + break; + } + else { + return 1; + } + } + } +} diff --git a/practices/ c/ level1/ p03_Diophantus/Diophants.c b/practices/ c/ level1/ p03_Diophantus/Diophants.c new file mode 100644 index 00000000..d1120edc --- /dev/null +++ b/practices/ c/ level1/ p03_Diophantus/Diophants.c @@ -0,0 +1,11 @@ +#include +int main() +{ + int x; + for (x = 1; x <= 150; x++) { + if (x*(1 / 6.0 + 1 / 7.0 + 1 / 12.0) + 5 + x / 2.0 + 4 == x) { + printf("%d", x-4); + } + } + return 0; +} diff --git a/practices/ c/ level1/ p03_Diophantus/Diophantus.c b/practices/ c/ level1/ p03_Diophantus/Diophantus.c new file mode 100644 index 00000000..d1120edc --- /dev/null +++ b/practices/ c/ level1/ p03_Diophantus/Diophantus.c @@ -0,0 +1,11 @@ +#include +int main() +{ + int x; + for (x = 1; x <= 150; x++) { + if (x*(1 / 6.0 + 1 / 7.0 + 1 / 12.0) + 5 + x / 2.0 + 4 == x) { + printf("%d", x-4); + } + } + return 0; +} diff --git "a/practices/ c/ level1/ p04_\346\260\264\344\273\231/shuixian.c" "b/practices/ c/ level1/ p04_\346\260\264\344\273\231/shuixian.c" new file mode 100644 index 00000000..a9be53e1 --- /dev/null +++ "b/practices/ c/ level1/ p04_\346\260\264\344\273\231/shuixian.c" @@ -0,0 +1,16 @@ +#include +#include +int main() +{ + int x; + int a, b, c; + for (x = 100; x < 1000; x++) { + a = x % 100; + b = (x / 10) % 10; + c = x % 10; + if ((pow(a, 3) + pow(b, 3) + pow(c, 3)) == x) { + printf("%d\t", x); + } + } + return 0; +} diff --git a/practices/ c/ level1/ p05_allPrimes/allprimes.c b/practices/ c/ level1/ p05_allPrimes/allprimes.c new file mode 100644 index 00000000..9a6bc173 --- /dev/null +++ b/practices/ c/ level1/ p05_allPrimes/allprimes.c @@ -0,0 +1,23 @@ +#include +#include +#include +int main() +{ + clock_t t1, t2; + t1=clock(); + int i, j; + int num[1001] = {0}; + for (i = 2; i <= 1000; i++) { + for (j = 2 * i; j <= 1000; j += i) { + num[j] = 1; + } + } + for (i = 2; i <= 1000; i++) { + if (num[i] == 0) { + printf("%d\t", i); + } + } + t2 = clock(); + printf("\n%d\n", t2 - t1); +return 0; +} diff --git a/practices/ c/ level1/ p06_Goldbach/Goldbach.c b/practices/ c/ level1/ p06_Goldbach/Goldbach.c new file mode 100644 index 00000000..9c241a04 --- /dev/null +++ b/practices/ c/ level1/ p06_Goldbach/Goldbach.c @@ -0,0 +1,27 @@ +//Goldbach:任一大于2的偶数都可写成两个质数之和 +#include +#include +#include +int main() +{ + int i, j; + int k; + int m, n; + int num[101] = {0}; + for (i = 2; i < 51; i++) { + for (j = 2 * i; j < 101; j += i){ + num[j] = 1; + } + } + for (k = 4; k < 101; k += 2) { + for (m = 2; m < 101; m++) { + for (n = 2; n < 101; n++) { + if (num[m] == 0 && num[n] == 0 && m + n == k) { + printf("%d=%d+%d\n", k, m, n); + } + } + } + } + system("pause"); + return 0; +} diff --git a/practices/ c/ level1/ p08_hanoi/hanoi.c b/practices/ c/ level1/ p08_hanoi/hanoi.c new file mode 100644 index 00000000..94500b20 --- /dev/null +++ b/practices/ c/ level1/ p08_hanoi/hanoi.c @@ -0,0 +1,33 @@ +#include +void move(int a, char from, char to); +int i = 1; +void hanoi(int x, char from, char by, char to); +#include +void main() +{ + int n; + char a = 'A', b = 'B', c = 'C'; + printf("请输入圆盘个数"); + scanf_s("%d", &n); + printf("圆盘移动情况如下:"); + hanoi(n,a,b,c); + system("pause"); +} + +void move(int a, char from, char to) +{ + printf("第%d步:第%d个盘从%c->%c\n",i,a, from, to); + i++; +} + +void hanoi(int x, char from, char by, char to) +{ + if (x == 1) { + move(x, from, to); + } + if (x > 1) { + hanoi(x - 1, from, to, by); + move(x, from, to); + hanoi(x - 1, by, from,to); + } +} diff --git a/practices/ c/ level1/ p09_maze/maze.c b/practices/ c/ level1/ p09_maze/maze.c new file mode 100644 index 00000000..3213d1e6 --- /dev/null +++ b/practices/ c/ level1/ p09_maze/maze.c @@ -0,0 +1,82 @@ +#include +#include +#include +#define size 10 +int position[size][size]; +void input_map(int nn); +void print_map(int nn); +void move_position(int nn); +void main() +{ + int n; + printf("请输入地图大小:\n"); + scanf("%d", &n); + input_map(n); + move_position(n); + system("pause"); +} + +void input_map(int nn) +{ + for (int i = 0; i < nn; i++) { + for (int j = 0; j < nn; j++) { + scanf("%d", &position[i][j]); + } + } +} + +void print_map(int nn) +{ + for (int i = 0; i < nn; i++) { + for (int j = 0; j < nn; j++) { + if (position[i][j] == 0) { + printf(" "); + } + else if (position[i][j] == 1) { + printf("#"); + } + else if (position[i][j] == 9) { + printf("P"); + } + } + printf("\n"); + } +} + +void move_position(int nn) +{ + int x, y; + x = y = 0; + position[x][y] = 9; + print_map(nn); + char walk; + while (1) { + walk = _getch(); + if (walk == 'w'&&(position[x-1][y]!=1)&&(x>0)) { + position[x-1][y] = 9; + position[x][y] = 0; + x--; + } + if (walk == 's' && (position[x+1][y] != 1) && (x0)) { + position[x][y-1] = 9; + position[x][y] = 0; + y--; + } + if (walk == 'd'&&(position[x][y+1]!=1)&&(y +#include +#define LEN sizeof(Node) +struct list { + int data; + struct list *next; +}; +typedef struct list Node; +int main() +{ + int n=0; + Node *head, *p, *p_new; + head = + p_new = (Node*)malloc(LEN); + scanf_s("%d", &p_new->data); + while (p_new->data != 0) { + p = p_new; + p_new = (Node*)malloc(LEN); + scanf_s("%d", &p_new->data); + p->next = + p_new; + } + p_new->next = + NULL; + printf("存储的数据为:\n"); + p = head; + while (p != NULL) { + printf("%d\t", p->data); + p = + p->next; + } + printf("\n反序结果如下:\n"); + Node *pre, *cur, *next; + cur = + head; + pre = NULL; + while (cur!= NULL) { + next = + cur->next; + cur->next = + pre; + pre = cur; + cur = next; + } + head = + pre; + p = head; + while (p->next!= NULL) { + printf("%d\t", p->data); + p = + p->next; + } + printf("%d\n", p->data); + Node*pp = head; + while (pp != NULL) { + if (pp->data == 5) { + n++; + printf("值为5的节点序号为%d\n", n); + } + pp = + pp->next; + } + if (n == 0) { + return -1; + } + system("pause"); +} diff --git a/practices/ c/ level1/ p12_warehouse/jinxiaoxun.c b/practices/ c/ level1/ p12_warehouse/jinxiaoxun.c new file mode 100644 index 00000000..b1547457 --- /dev/null +++ b/practices/ c/ level1/ p12_warehouse/jinxiaoxun.c @@ -0,0 +1,168 @@ +#include +#include +#include +struct type_number { + char name[20]; + int num; + struct type_number *next; +}; +typedef struct type_number xinxi; +xinxi node; +xinxi *head; + +void xianshi(); +void show(); ; +void input(); +void output(); +void save(); + +int num; +char name[20]; +int n = 0; + +void main() +{ + xianshi(); + while (1) { + system("cls"); + printf("请选择操作类型\n"); + printf(" 1.查看库存信息\n 2.入库\n 3.出库\n 4.退出程序\n "); + int option; + scanf_s("%d", &option); + switch (option) + { + case 1: + system("cls"); + show(); + int nn; + printf("返回上一层请按1,否则结束程序\n"); + scanf("%d", &nn); + if (nn == 1) { + break; + } + else { + exit(0); + } + case 2: + system("cls"); + input(); + break; + case 3: + system("cls"); + output(); + break; + case 4: + save(); + exit(0); + default: + system("cls"); + printf("错误,请重新输入\n"); + } + } +} + + +void xianshi() +{ + head = (xinxi*)malloc(sizeof(xinxi)); + head->next = + NULL; + FILE *fp; + fp = fopen("shuju.txt", "r"); + if (fscanf(fp, "%d", &n) != EOF) { + for (int i = 0; i < n; i++); + fscanf(fp, "%s", name); + fscanf(fp, "%d", &num); + show(); + } + fclose(fp); +} + +void show() +{ + xinxi *p; + p = head->next; + while (p != NULL) { + printf("Name:%s\t\tNum:%d\n", p->name, p->num); + p = + p->next; + } +} + +void input() +{ + int compare = 0; + xinxi *p; + p = + head->next; + printf("please input name\n"); + scanf("%s", name); + printf("pleade input num\n"); + scanf_s("%d", &num); + while (p != NULL) { + if (strcmp(p->name, name) == 0) { + compare = 1; + p->num += num; + } + p = + p->next; + } + if (compare == 0) { + xinxi *new_p; + new_p = (xinxi*)malloc(sizeof(xinxi)); + strcpy(new_p->name, name); + new_p->num = num; + new_p->next = + head->next; + head->next = + new_p; + n++; + } +} + +void output() +{ + int search = 0; + xinxi *p, *q; + p = head->next; + q = head; + printf("请输入出库对象:\n"); + scanf("%s", name); + printf("请输入出库数量:\n"); + scanf("%d", &num); + while (p != NULL) { + if (strcmp(p->name, name) == 0) { + search = 1; + if (p->num < num) { + printf("数量不足出库需求\n"); + break; + } + else { + p->num -= num; + } + } + p = + p->next; + } + if (search = 0) { + printf("库存中无该物品\n"); + } +} + +void save() +{ + FILE *fp; + fp = fopen("shuju", "w"); + fprintf(fp, "%d\n", n); + xinxi *p, *q; + p = head->next; + q = head; + free(q); + while (p != NULL) { + fprintf(fp, "%s\n", p->name); + fprintf(fp, "%d\n", p->num); + q = p; + p = p->next; + free(q); + } +} diff --git a/practices/ cpp/ level1/ p01_Queue/queue.cpp b/practices/ cpp/ level1/ p01_Queue/queue.cpp new file mode 100644 index 00000000..65fb5a62 --- /dev/null +++ b/practices/ cpp/ level1/ p01_Queue/queue.cpp @@ -0,0 +1,89 @@ +#include +using namespace std; + +class queue { +private: + struct node { + int num; + struct node* next; + }; + int len, count; + struct node *head, *p, *p_new, *temp; +public: + queue(); + void append(); + void pop(); + bool if_full(); + bool if_empty(); +}Queue; + +queue::queue() +{ + head = NULL; + len = 100; + count = 0; +} +void queue::append() +{ + head=p_new = new(struct node); + int i = 1; + p_new->num = i; + while (count != 99) { + i++; + p = p_new; + p_new = new(struct node); + p_new->num = i; + p->next = + p_new; + count++; + } + p_new->next= + NULL; + p = head; + while (p != NULL) { + cout << p->num << endl; + p = p->next; + } + cout << "it's full now" << endl; +} +void queue::pop() +{ + while (count != 0) { + temp = head->next; + head->next = + head->next->next; + free(temp); + count--; + } +} +bool queue::if_full() +{ + if (count == len) { + return true; + } + else { + return false; + } +} +bool queue::if_empty() +{ + if (count == 0) { + return true; + } + else { + return false; + } +} +void main() +{ + queue(); + if (Queue.if_empty()) { + Queue.append(); + } + if (Queue.if_full()) { + Queue.pop(); + } + else { + cout << "it's empty now"<< endl; + } +} diff --git a/practices/ cpp/ level1/ p02_Stack/stack.cpp b/practices/ cpp/ level1/ p02_Stack/stack.cpp new file mode 100644 index 00000000..cc6f8450 --- /dev/null +++ b/practices/ cpp/ level1/ p02_Stack/stack.cpp @@ -0,0 +1,90 @@ +#include +using namespace std; + +class queue { +private: + struct node { + int num; + struct node* next; + }; + int len, count; + struct node *head, *p, *p_new, *temp; +public: + queue(); + void append(); + void pop(); + bool if_full(); + bool if_empty(); +}Queue; + +queue::queue() +{ + int n; + cin >> n; + head = NULL; + len = n; + count = 0; +} +void queue::append() +{ + head = p = new(struct node); + p->next=NULL; + int i = 1; + p->num = i; + while (count != len-1) { + i++; + p_new = new(struct node); + p_new->num = i; + p_new->next= + head; + head=p_new; + count++; + } + p = head; + while (p != NULL) { + cout << p->num << endl; + p = p->next; + } + cout << "it's full now" << endl; +} +void queue::pop() +{ + while (count != 0) { + temp = head->next; + head->next = + temp->next; + free(temp); + count--; + } +} +bool queue::if_full() +{ + if (count == len) { + return true; + } + else { + return false; + } +} +bool queue::if_empty() +{ + if (count == 0) { + return true; + } + else { + return false; + } +} +void main() +{ + queue(); + if (Queue.if_empty()) { + Queue.append(); + } + if (Queue.if_full()) { + Queue.pop(); + } + else { + cout << "it's empty now"<< endl; + } +} diff --git a/practices/ cpp/ level1/ p03_SafeArray/safearray.cpp b/practices/ cpp/ level1/ p03_SafeArray/safearray.cpp new file mode 100644 index 00000000..f7c49a34 --- /dev/null +++ b/practices/ cpp/ level1/ p03_SafeArray/safearray.cpp @@ -0,0 +1,57 @@ +#include +using namespace std; + +class SafeArray { +private: + int num; + int index; + int len; + int *p; +public: + SafeArray(); + bool if_out(); + void give_value(); + ~SafeArray(); +}safearray; + +SafeArray::SafeArray() +{ + int n; + cin >> n; + len = n; + index = 0; + p = new int[len]; +} +bool SafeArray::if_out() +{ + if (index >= len) { + return 1; + } + else { + return 0; + } +} +void SafeArray::give_value() +{ + while (1) { + int value; + cin >> value; + if (if_out()) { + cout << "out of range!" << endl; + break; + } + else { + SafeArray::p[index] = value; + index++; + } + } +} +SafeArray::~SafeArray() +{ + delete p; +} + +void main() +{ + safearray.give_value(); +} diff --git a/practices/ cpp/ level1/ p04_cppScoreManagement/cppScoreManagement.cpp b/practices/ cpp/ level1/ p04_cppScoreManagement/cppScoreManagement.cpp new file mode 100644 index 00000000..bac959f3 --- /dev/null +++ b/practices/ cpp/ level1/ p04_cppScoreManagement/cppScoreManagement.cpp @@ -0,0 +1,219 @@ +#include +#include +using namespace std; +/* run this program using the console pauser or add your own getch, system("pause") or input loop */ + +int sleep_time = 2000; +class student { +private: + struct DATA { + int stu_no; //学生编号 + char name[20]; //姓名 + int score; //成绩 + struct DATA *next; + }; + struct DATA *head, *p_new, *temp1, *temp2; +public: + student(); + void show(); + void add_stu(); + void del_stu(); + void get_score(); +}; + +student::student() +{ + head = NULL; +} +void student::add_stu() //添加学生信息的函数 +{ + int if_add; + while (1) { + int have_exist = 0; //用于判定将要加入的学生是否已存在 + p_new = new(struct DATA); + cout << "请输入学生的学号:" << endl; + cin >> p_new->stu_no; + temp1 = head; + while (temp1 != NULL) { + if (temp1->stu_no == p_new->stu_no) { + cout << "该学生信息已存在,若要继续添加,请先删除" << endl; + Sleep(sleep_time); + have_exist = 1; + break; + } + temp1 = + temp1->next; + } + if (have_exist) { + break; + } + cout << "请输入学生的姓名:" << endl; + cin >> p_new->name; + p_new->score = 0; + p_new->next = head; + head = p_new; + cout << "选择即将进行操作的序号" << endl; + cout << "1.继续添加" << endl; + cout << "2.返回上一层" << endl; + cin >> if_add; + if (2==if_add) { + break; + } + } +} +void student::del_stu() //删除学生信息的函数 +{ + int number; //存储将要删除对象的编号 + while (1) { + int have_find = 0; + cout << "请输入删除对象的编号" << endl; + cin >> number; + temp1 = head; + temp2 = + head->next; + if (temp2==NULL) { + if (temp1->stu_no == number) { + head = temp2; + delete(temp1); + cout << "删除成功" << endl; + Sleep(sleep_time); + break; + } + else { + cout << "信息库中无该对象" << endl; + Sleep(sleep_time); + break; + } + } + else if(1){ + if (temp1->stu_no == number) { + head = temp2; + delete(temp1); + cout << "删除成功" << endl; + Sleep(sleep_time); + break; + } + else { + while (temp2 != NULL) { + if (temp2->stu_no == number) { + have_find++; + temp1->next = + temp2->next; + delete(temp2); + cout << "删除成功" << endl; + Sleep(sleep_time); + break; + } + if (have_find == 0) { + temp1 = temp2; + temp2 = + temp2->next; + } + } + } + if (have_find) { + break; + } + else { + cout << "信息库中无该对象" << endl; + Sleep(sleep_time); + break; + } + } + } +} +void student::get_score() //添加学生成绩的函数 +{ + int if_get; + while (1) { + cout << "请输入进行添加成绩对象的号码:" << endl; + int number; + cin >> number; + int if_find = 0; + temp1 = head; + while (temp1 != NULL) { + if (temp1->stu_no == number) { + cout << "请输入分数" << endl; + cin >> temp1->score; + if_find++; + break; + } + temp1 = + temp1->next; + } + if (0 == if_find) { + cout << "没有该学生的信息!" << endl; + cout << "选择即将进行操作的序号" << endl; + cout << "1.继续添加" << endl; + cout << "2.返回上一层" << endl; + cin >> if_get; + if (2 == if_get) { + break; + } + }if (0 != if_find) { + cout << "选择即将进行操作的序号" << endl; + cout << "1.继续添加" << endl; + cout << "2.返回上一层" << endl; + cin >> if_get; + if (2 == if_get) { + break; + } + } + } +} +void student::show() //显示学生信息的函数 +{ + cout << "学生编号" << "\t\t" << "学生姓名" << "\t\t" << "学生成绩" << endl; + temp1 = head; + while (temp1 != NULL) + { + cout << temp1->stu_no << "\t\t\t" << temp1->name << "\t\t\t" << temp1->score << endl; + temp1 = temp1->next; + } +} + +int main(int argc, char** argv) { + class student STUDENT; + while (1) { + system("cls"); + cout << "请输入将要执行操作的编号:" << endl; + cout << "1.查看学生名单;" << endl; + cout << "2.添加学生;" << endl; + cout << "3.删除学生;" << endl; + cout << "4.录入成绩;" << endl; + cout << "5.退出程序;" << endl; + int n; + cin >> n; + system("cls"); + switch (n) { + case 1: + STUDENT.show(); + int if_show; + cout << "选择即将进行操作的序号" << endl; + cout << "1.返回上一层" << endl; + cout << "2.退出程序" << endl; + cin >> if_show; + if (1 == if_show) { + break; + } + else { + return -1; + } + case 2: + STUDENT.add_stu(); + break; + case 3: + STUDENT.del_stu(); + break; + case 4: + STUDENT.get_score(); + break; + case 5: + return -1; + default: + cout << "没有该选项!"; + Sleep(sleep_time); + } + } + return 0; +} diff --git a/practices/ cpp/ level1/ p05_Canvas/canvas.cpp b/practices/ cpp/ level1/ p05_Canvas/canvas.cpp new file mode 100644 index 00000000..d6bfee14 --- /dev/null +++ b/practices/ cpp/ level1/ p05_Canvas/canvas.cpp @@ -0,0 +1,103 @@ +#include +using namespace std; + +class Canvas { +private: + struct Circle { + int center_x,center_y,radii; //圆形参数:名称、中心位置、半径 + struct Circle *next; + }circle; + struct Rectangle { + int center_x, center_y, length, width; //矩形参数:名称、中心位置、长宽、宽度 + struct Rectangle *next; + }rectangle; + struct Circle *head1, *p1, *p_new1; + struct Rectangle *head2, *p2, *p_new2; +public: + Canvas(); + void if_add(); + void add_circle(); + void add_rectangle(); + void show_figure(); +}canvas; + +Canvas::Canvas() +{ + head1 = NULL; + head2 = NULL; +} +void Canvas::if_add() +{ + while (1) { + system("cls"); + cout << "add or exit?" << endl; + cout << "1.add a circle" << endl; //添加圆的信息 + cout << "2.add a rectangle" << endl; //添加矩形的信息 + cout << "3.stop adding and see information" << endl; //停止添加,查看已有信息 + int n; + cin >> n; + system("cls"); + if (1 == n) { + add_circle(); //添加圆信息 + } + else if (2 == n) { + add_rectangle(); //添加矩形信息 + } + else { + break; //停止添加 + } + } +} +void Canvas::add_circle() +{ + p_new1 = new(struct Circle); + cout << "please input the center_x" << endl; + cin >> p_new1->center_x; + cout << endl << "please input the center_y" << endl; + cin >> p_new1->center_y; + cout << endl << "please input the length" << endl; + cin >> p_new1->radii; + p_new1->next = head1; + head1 = p_new1; +} +void Canvas::add_rectangle() +{ + p_new2 = new(struct Rectangle); + cout << "please input the center_x" << endl; + cin >> p_new2->center_x; + cout << endl << "please input the center_y" << endl; + cin >> p_new2->center_y; + cout << endl << "please input the length" << endl; + cin >> p_new2->length; + cout << endl << "please input the width" << endl; + cin >> p_new2->width; + p_new2->next = head2; + head2 = p_new2; +} +void Canvas::show_figure() +{ + int i = 1, j = 1; + p1 = head1; + cout << "circle no."<<"\t\t"<<"center_x"<<"\t\t"<<"center_y"<<"\t\t"<<"radii" << endl; + while (p1 != NULL) { + cout << i <<"\t\t\t"<< p1->center_x <<"\t\t\t"<< p1->center_y <<"\t\t\t"<< p1->radii << endl; + p1 = + p1->next; + i++; + } + p2 = head2; + cout << "rectangle no."<<"\t\t"<<"center_x"<<"\t\t"<<"center_y"<<"\t\t"<<"length"<<"\t\t"<<"width"<< endl; + while (p2 != NULL) { + cout << j <<"\t\t\t"<center_x <<"\t\t\t"<< p2->center_y <<"\t\t\t" <length <<"\t\t"<< p2->width << endl; + p2 = + p2->next; + j++; + } +} + +void main() +{ + canvas.if_add(); + canvas.show_figure(); + system("pause"); +} diff --git a/practices/ cpp/ level1/ p06_CircleAndPoint/CircleAndPoint.cpp b/practices/ cpp/ level1/ p06_CircleAndPoint/CircleAndPoint.cpp new file mode 100644 index 00000000..f71b4c94 --- /dev/null +++ b/practices/ cpp/ level1/ p06_CircleAndPoint/CircleAndPoint.cpp @@ -0,0 +1,51 @@ +#include +using namespace std; + +class point { +private: + int x, y; //点横坐标x,纵坐标y +public: + point(int xx = 0, int yy = 0) + { + x = xx, y = yy; + } + void move(); + void show(); +}Point; +void point::move() +{ + int move_x, move_y; + cout << "请输入即将移动横坐标的大小:" << endl; + cin >> move_x; + cout << "请输入即将移动的纵坐标的大小" << endl; + cin >> move_y; + x += move_x, y += move_y; +} +void point::show() +{ + cout <<"点坐标"<< "(" << x << "," << y << ")" << endl; //移动后点坐标 +} + +class circle :public point +{ +private: + int radii; //圆的直径 +public: + circle(int R, int x, int y) :point(x, y) + { + radii = R; + } + void show_cir() + { + show(); + cout << "the radii of tthe circle is " << radii << endl; + } +}; + +void main() +{ + circle Circle(1,0,0); + Circle.show_cir(); + Circle.move(); + Circle.show_cir(); +} diff --git a/practices/ cpp/ level1/ p11_Fighters/Fighter.cpp b/practices/ cpp/ level1/ p11_Fighters/Fighter.cpp new file mode 100644 index 00000000..adc599ab --- /dev/null +++ b/practices/ cpp/ level1/ p11_Fighters/Fighter.cpp @@ -0,0 +1,288 @@ +#include +#include +#include +#include +#include +#define move_speed_my_aircraft 5 +#define move_speed_my_missle 3 +#define move_speed_enemy_aircraft 1.5 +#define move_speed_enemy_missile 2 +#define window_lenth 1920 +#define window_width 1020 + +void move_aircraft(sf::Sprite &duixiang) +{ + sf::Vector2f now_position=duixiang.getPosition(); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)&&(now_position.x>53.25)){ + duixiang.move(-move_speed_my_aircraft, 0); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)&&(now_position.x75)){ + duixiang.move(0, -move_speed_my_aircraft); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)&&(now_position.y0){ + your_blood_number=300; + MY_AIRCRAFT *my_aircraft=new (MY_AIRCRAFT); + if_my_aircraft_exist=1; + while (window.isOpen()){ + //window.setFramerateLimit(60); + sf::Event event; + while (window.pollEvent(event)) + { + if (event.type == sf::Event::Closed) + window.close(); + } + finish_time=clock(); + between_time=finish_time-start_time; + if(between_time>6000){ + enemy_number=rand()%3+1; + for(int j=0;j<30;j++){ + if((0==enemy_aircraft[j].if_exist)&&(0==enemy_missile[j].if_exist)){ + enemy_aircraft[j].if_exist=1; + enemy_aircraft[j].index=rand()%window_lenth+1; + enemy_aircraft[j].aircraft.setPosition(enemy_aircraft[j].index,0); + enemy_missile[j].index=(rand()%window_width+1)/2; + enemy_missile[j].missile.setPosition(enemy_aircraft[j].index,enemy_missile[j].index); + enemy_number--; + if(0==enemy_number){ + break; + } + } + } + start_time=finish_time; + } + move_aircraft(my_aircraft->aircraft); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)){ + sf::Time elapsed = clock1.getElapsedTime(); + clock1.restart(); + if(elapsed.asSeconds()>0.05){ + for(int i=0;i<50;i++){ + if(0==my_missile[i].if_exist){ + my_missile[i].missile.setPosition(my_aircraft->aircraft.getPosition()); + my_missile[i].if_exist=1; + break; + } + } + } + } + for(int i=0;i<50;i++){ + if(1==my_missile[i].if_exist){ + my_missile[i].missile.move(0,-move_speed_my_missle); + } + if(my_missile[i].missile.getPosition().y<-20){ + my_missile[i].if_exist=0; + } + } + for(int j=0;j<30;j++){ + if(enemy_aircraft[j].if_exist==1){ + if((enemy_aircraft[j].aircraft.getPosition().y)>=(enemy_missile[j].index)){ + enemy_missile[j].if_begin_move=1; + } + } + if((1==enemy_missile[j].if_begin_move)&&(enemy_missile[j].missile.getPosition().ywindow_width){ + enemy_aircraft[j].if_exist=0; + } + } + if(1==enemy_missile[j].if_begin_move){ + if(enemy_missile[j].missile.getPosition().y>=window_width){ + enemy_missile[j].if_exist=0; + enemy_missile[j].if_begin_move=0; + } + } +} + window.clear(sf::Color::White); + window.draw(my_aircraft->aircraft); + for(int i=0;i<50;i++){ + if(1==my_missile[i].if_exist){ + window.draw(my_missile[i].missile); + } + } + for(int j=0;j<30;j++){ + if(1==enemy_aircraft[j].if_exist){ + window.draw(enemy_aircraft[j].aircraft); + } + if(1==enemy_missile[j].if_exist){ + window.draw(enemy_missile[j].missile); + } + } + + + + sf::VertexArray quad(sf::Quads,4); + quad[0].position=sf::Vector2f(10,10); + quad[1].position=sf::Vector2f(10+your_blood_number,10); + quad[2].position=sf::Vector2f(10+your_blood_number,60); + quad[3].position=sf::Vector2f(10,60); + quad[0].color=sf::Color::Red; + quad[1].color=sf::Color::Red; + quad[2].color=sf::Color::Red; + quad[3].color=sf::Color::Red; + window.draw(quad); + + for(int i=0;i<50;i++){ + for(int j=0;j<30;j++){ + if((1==my_missile[i].if_exist)&&(1==enemy_aircraft[j].if_exist)){ + sf::FloatRect boundingBox1 = enemy_aircraft[j].aircraft.getGlobalBounds(); + sf::FloatRect boundingBox2 = my_missile[i].missile.getGlobalBounds(); + if(boundingBox1.intersects(boundingBox2)){ + my_missile[i].if_exist=0; + enemy_aircraft[j].if_exist=0; + } + } + } + } + sf::FloatRect boundingBox3 = my_aircraft->aircraft.getGlobalBounds(); + for(int j=0;j<30;j++){ + if(1==enemy_aircraft[j].if_exist){ + sf::FloatRect boundingBox1 = enemy_aircraft[j].aircraft.getGlobalBounds(); + if(boundingBox3.intersects(boundingBox1)){ + + enemy_aircraft[j].if_exist=0; + your_blood_number-=20; + break; + } + } + + } + for(int j=0;j<30;j++){ + if(1==enemy_missile[j].if_exist){ + sf::FloatRect boundingBox2 = enemy_missile[j].missile.getGlobalBounds(); + if(boundingBox2.intersects(boundingBox3)){ + enemy_missile[j].if_exist=0; + enemy_missile[j].if_begin_move=0; + enemy_missile[j].index=window_lenth; + your_blood_number-=10; + break; + } + } + } + if(your_blood_number<=0){ + if_my_aircraft_exist=0; + } + if(0==if_my_aircraft_exist){ + for(int j=0;j<30;j++){ + enemy_aircraft[j].if_exist=0; + enemy_missile[j].if_exist=0; + enemy_missile[j].if_begin_move=0; + } + window.clear(sf::Color::White); + window.display(); + Sleep(3000); + break; + } + window.display(); +} + } + return 0; +} diff --git a/practices/ cpp/ level1/ p11_Fighters/classes.h b/practices/ cpp/ level1/ p11_Fighters/classes.h new file mode 100644 index 00000000..9f3b004c --- /dev/null +++ b/practices/ cpp/ level1/ p11_Fighters/classes.h @@ -0,0 +1,170 @@ +#define move_speed_my_aircraft 2 +#define window_lenth 1920 +#define window_width 1080 +void move_aircraft(sf::Sprite &duixiang) +{ + sf::Vector2f now_position = duixiang.getPosition(); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && (now_position.x>53.25)) { + duixiang.move(-move_speed_my_aircraft, 0); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && (now_position.x75)) { + duixiang.move(0, -move_speed_my_aircraft); + } + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && (now_position.y +#include +#include +#define move_speed 0.5 +#define window_length 1280 +#define window_width 960 +#define missile_speed 1 +#define enemy_speed 0.1 +//导弹的类 +class MISSILE{ +public: + sf::Texture tex_missile; + sf::Sprite missile; + MISSILE(){ + if (!tex_missile.loadFromFile("missile.jpg")){ + // 未找到文件的情况 + } + missile.setTexture(tex_missile); + missile.setScale(0.6f,0.6f); + missile.setOrigin(62.5,62.5); + } +}; +//敌机的类 +class ENEMY{ +public: + sf::Texture tex_enemy; + sf::Sprite enemy; + ENEMY(){ + if (!tex_enemy.loadFromFile("enemy.png")){ + // 未找到文件的情况 + } + enemy.setTexture(tex_enemy); + enemy.setOrigin(149,134); + enemy.setScale(0.4f,0.4f); + } +}; +//定义我方飞机的移动函数 +void move_aircraft(sf::Sprite &duixiang) +{ + sf::Vector2f position = duixiang.getPosition(); +//左移 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)&&(position.x>53)){ + duixiang.move(-move_speed, 0); + } +//右移 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)&&(position.x0+75)){ + duixiang.move(0,-move_speed); + } +//下移 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)&&(position.ymissile.setPosition(position.x,position.y-100); + sf::Vector2f position_missile=p->missile.getPosition(); + while(position_missile.y>0){ + p->missile.move(0,-missile_speed); + position_missile=p->missile.getPosition(); + move_aircraft(aircraft); + window.draw(p->missile); + window.display(); + window.clear(sf::Color::White); + window.draw(aircraft); + } + delete p; + } + window.clear(sf::Color::White); + window.draw(aircraft); + window.display(); +//根据随机数种子设置敌机位置 + int enemy_idx=rand()%1280+1; + ENEMY *q=new ENEMY; + q->enemy.setPosition(enemy_idx,0); + sf::Vector2f position_enemy=q->enemy.getPosition(); + while(position_enemy.yenemy.move(0,enemy_speed); + position_enemy=q->enemy.getPosition(); + move_aircraft(aircraft); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)){ + MISSILE*p=new MISSILE; + sf::Vector2f position = aircraft.getPosition(); + p->missile.setPosition(position.x,position.y-100); + sf::Vector2f position_missile=p->missile.getPosition(); + while(position_missile.y>0){ + q->enemy.move(0,enemy_speed); + p->missile.move(0,-missile_speed); + position_missile=p->missile.getPosition(); + move_aircraft(aircraft); + window.draw(p->missile); + window.draw(q->enemy); + window.display(); + window.clear(sf::Color::White); + window.draw(aircraft); + } + delete p; + } + move_aircraft(aircraft); + window.draw(q->enemy); + window.display(); + window.clear(sf::Color::White); + window.draw(aircraft); +} +delete q; + } + return 0; +} diff --git a/practices/c/level0/c1_4.c b/practices/c/level0/c1_4.c new file mode 100644 index 00000000..17df14d2 --- /dev/null +++ b/practices/c/level0/c1_4.c @@ -0,0 +1,10 @@ +#include +int main() +{ + int a, b; + printf("请输入两个数"); + scanf("%d%d", &a, &b); + if (a < b) + a = b; + printf("两个数中较大的数是%d", a); +} diff --git a/practices/c/level0/c1_6.c b/practices/c/level0/c1_6.c new file mode 100644 index 00000000..c07605d2 --- /dev/null +++ b/practices/c/level0/c1_6.c @@ -0,0 +1,17 @@ +c#include +int main() +{ + int i,n,max_number=0; + printf("请输入要比较的数的个数"); + scanf("%d", &n); + int number; + for (i = 0; i < n; i++) + { + scanf("%d", &number); + if (number > max_number) + { + max_number = number; + } + } + printf("这n个数中最大的数是%d", max_number); +} diff --git a/practices/c/level0/c2_1.1.4.c b/practices/c/level0/c2_1.1.4.c new file mode 100644 index 00000000..a96bea71 --- /dev/null +++ b/practices/c/level0/c2_1.1.4.c @@ -0,0 +1,22 @@ +#include +void printf_X(int a); +void main() +{ + int i, j; + for (i = 1; i <= 9; i++) + { + printf_X(i); + printf("\n"); + } +} + + +//自定义的printf_X函数 +void printf_X(int a) +{ + int j; + for (j = 1; j <= a; j++) + { + printf("%dX%d=%d\t", a, j, a*j); + } +} diff --git a/practices/c/level0/level0_c2_1.1.5.c b/practices/c/level0/level0_c2_1.1.5.c new file mode 100644 index 00000000..a13a140d --- /dev/null +++ b/practices/c/level0/level0_c2_1.1.5.c @@ -0,0 +1,13 @@ +#include +void main() +{ + int i,n; + scanf("%d",&n); + int number[n]; + for(i=1;i<=n;i++){ + scanf("%d",&number[i]); + } + for(i=n;i>=1;i--){ + printf("%d\t",number[i]); + } +} diff --git a/practices/c/level0/level0_c2_1.1.6.c b/practices/c/level0/level0_c2_1.1.6.c new file mode 100644 index 00000000..222efd79 --- /dev/null +++ b/practices/c/level0/level0_c2_1.1.6.c @@ -0,0 +1,16 @@ +#include +const int n=5; +void main() +{ + int i,j; + int number[10]={0,1,2,3,4,5,6,7,8,9}; + for(i=1;i<6;i++){ + scanf("%d",&j); + number[j]=0; + } + for (i=0;i<10;i++){ + if(number[i]!=0){ + printf("%d\t",number[i]); + } + } +} diff --git a/practices/c/level0/level0_c2_1.1.7.c b/practices/c/level0/level0_c2_1.1.7.c new file mode 100644 index 00000000..e1551f54 --- /dev/null +++ b/practices/c/level0/level0_c2_1.1.7.c @@ -0,0 +1,27 @@ +#include +const int n=5; +void main() +{ + int i,j,changed; + int number[n+1]; + for(i=1;inumber[i+1]){ + number[0]=number[i]; + number[i]=number[i+1]; + number[i+1]=number[0]; + changed=1; + } + } + if(changed==0){ + break; + } + } + for(i=1;i<=n;i++){ + printf("%d\t",number[i]); + } +} diff --git a/practices/c/level0/level0_c3_1.c b/practices/c/level0/level0_c3_1.c new file mode 100644 index 00000000..4e4e2b2d --- /dev/null +++ b/practices/c/level0/level0_c3_1.c @@ -0,0 +1,15 @@ +#include +const int n=10; +int main() +{ + int i,sum=0; + int number[n]; + for(i=0;i +int main() +{ + int i,sum=1; + int n; + scanf("%d",&n); + for(i=1;i<=n;i++){ + sum*=i; + } + printf("%d",sum); + return 0; +} diff --git a/practices/c/level0/level0_c3_3.c b/practices/c/level0/level0_c3_3.c new file mode 100644 index 00000000..86b154a0 --- /dev/null +++ b/practices/c/level0/level0_c3_3.c @@ -0,0 +1,15 @@ +#include +const int n=15; +void main() +{ + int i; + int x[n]; + x[0]=1,x[1]=1; + printf("%d\t%d\t",x[0],x[1]); + for(i=2;i +void main() +{ + int a,b,c; + scanf("%d%d%d",&a,&b,&c); + if(a*a== b*b+ c*c||b*b== a*a+ c*c||c*c== a*a+ b*b){ + printf("这个三角形是直角三角形"); + } + else{ + printf("这个三角形不是直角三角形"); + } + +} diff --git a/practices/c/level0/level0_c3_5.c b/practices/c/level0/level0_c3_5.c new file mode 100644 index 00000000..a04a9986 --- /dev/null +++ b/practices/c/level0/level0_c3_5.c @@ -0,0 +1,35 @@ +#include +void main() +{ + //输入两个矩形的左上角和右下角的点的坐标(x1,y1)(x2,y2)(x3,y3)(x4,y4) + float x1,y1,x2,y2; + float x3,y3,x4,y4; + float wide; + int x=0; + scanf("%f%f%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4); + if (x2 - x1 > x4-x3) { + wide = (x4 - x3) / 2; + if (wide > x1&&wide < x2&&y3 < y4) { + printf("两个矩形重叠"); + x=1; + } + } + else { + wide = (x2 - x1) / 2; + if (wide > x3&&wide < x4&&y1 < y4) { + printf("两个矩形重叠"); + x=1; + } + } + if (x3 > x1&&x3 < x2&&y3 > y2&&y3 < y1) { + printf("两个矩形重叠"); + x=1; + } + if (x1 > x3&&x1 < x4&&y1>y4&&y1 +void main() +{ + //输入两个矩形的左上角和右下角的点的坐标(x1,y1)(x2,y2)(x3,y3)(x4,y4) + float x1,y1,x2,y2; + float x3,y3,x4,y4; + scanf("%f%f%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); + if((x1x2)||(x1>x3&& x1x4)){ + if((y1>y3&& y1y4)||(y3>y1&& y3y2)){ + printf("这两个矩形重叠"); + } + else{ + printf("这两个矩形不重叠"); + } + } + else{ + printf("这两个矩形不重叠"); + } +} + diff --git a/practices/c/level0/level0_c3_5_changed_changed.c b/practices/c/level0/level0_c3_5_changed_changed.c new file mode 100644 index 00000000..aac1011f --- /dev/null +++ b/practices/c/level0/level0_c3_5_changed_changed.c @@ -0,0 +1,20 @@ +#include +void main() +{ + //输入两个矩形的左上角和右下角的点的坐标(x1,y1)(x2,y2)(x3,y3)(x4,y4) + float x1,y1,x2,y2; + float x3,y3,x4,y4; + int t=0; + scanf("%f%f%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); + if((x1 +float main() +{ + float rate; + float dollar,RMB; + scanf("%f%f%f",&rate,&dollar,&RMB); + RMB=dollar*rate; + printf("%fdollar=%fRMB",dollar,RMB); + return 0; +} diff --git "a/\345\201\232\346\263\225/ CPP/ 1\347\272\247/ p11_Fighters/fighter_another.cpp" "b/\345\201\232\346\263\225/ CPP/ 1\347\272\247/ p11_Fighters/fighter_another.cpp" new file mode 100644 index 00000000..c9a4c968 --- /dev/null +++ "b/\345\201\232\346\263\225/ CPP/ 1\347\272\247/ p11_Fighters/fighter_another.cpp" @@ -0,0 +1,861 @@ +#include +#include +#include +#include +#include"classes.h" +#define move_speed_my_missle 1.2 +#define move_speed_enemy_aircraft 0.5 +#define move_speed_enemy_missile 0.6 +#define move_speed_energy 1 +#define max_enemy_num 50 +#define max_enemy_missile_num 200 +#define max_my_missile_num 80 +#define window_lenth 1920 +#define window_width 1080 +#define PI 3.14 +int main() +{ + + srand(time(0)); + //播放背景音乐 + sf::Music backgound_music; + sf::Music enemy_boom; + sf::Music i_boom; + sf::Music boss_boom; + sf::Music fire; + if (!backgound_music.openFromFile("Sight.wav")) { + std::cout << "wrong0" << std::endl; + } + if (!enemy_boom.openFromFile("enemy_boom.wav")) { + std::cout << "wrong1" << std::endl; + } + if (!i_boom.openFromFile("i_boom.wav")) { + std::cout << "wrong2" << std::endl;; + } + if (!boss_boom.openFromFile("boss_boom.wav")) { + std::cout << "wrong0" << std::endl; + } + if (!fire.openFromFile("fire.wav")) { + std::cout << "wrong0" << std::endl; + } + backgound_music.setVolume(40); + enemy_boom.setVolume(50); + boss_boom.setVolume(60); + i_boom.setVolume(100); + fire.setVolume(40); + backgound_music.play(); + backgound_music.setLoop(true); + //设置背景图片 + sf::Texture tex_background; + sf::Sprite background; + if (!tex_background.loadFromFile("background.jpg")) { + std::cout << "wrong3" << std::endl; + } + background.setTexture(tex_background); + background.setOrigin(266.5, 150); + background.setScale(3.8f, 3.6f); + background.setPosition(window_lenth / 2, window_width / 2); + //爆炸特效 + sf::Texture tex_enemy_boom; + sf::Sprite enemy_boom_pic; + if (!tex_enemy_boom.loadFromFile("enemy_boom.png")) { + std::cout << "wrong" << std::endl; + } + enemy_boom_pic.setTexture(tex_enemy_boom); + enemy_boom_pic.setOrigin(61, 55); + //死亡时触发图片 + sf::Texture tex_death; + sf::Sprite death_picture; + if (!tex_death.loadFromFile("death.jpg")) { + std::cout << "wrong4" << std::endl; + } + death_picture.setTexture(tex_death); + death_picture.setOrigin(232.5, 150); + death_picture.setScale(4.5f, 3.5f); + death_picture.setPosition(window_lenth / 2, window_width / 2); + //游戏结束时触发图片 + sf::Texture tex_gameover; + sf::Sprite game_over; + if (!tex_gameover.loadFromFile("gameover.jpg")) { + std::cout << "wrong5" << std::endl; + } + game_over.setTexture(tex_gameover); + game_over.setOrigin(254.5,150); + game_over.setScale(3.8f, 3.5f); + game_over.setPosition(window_lenth / 2, window_width / 2); + //可以使用技能时,进行提醒 + sf::Font font; + if (!font.loadFromFile("BertramLP.ttf")){ + std::cout << "wrong6" << std::endl; + } + sf::Text text1; + text1.setFont(font); + text1.setString("You Can Use Skill_1: Z"); + text1.setCharacterSize(36); + text1.setFillColor(sf::Color::Blue); + text1.setPosition(10, 100); + sf::Text text2; + text2.setFont(font); + text2.setString("You Can Use Skill_2: X"); + text2.setCharacterSize(36); + text2.setFillColor(sf::Color::Red); + text2.setPosition(10, 150); + MY_MISSILE my_missile[max_my_missile_num]; + ENEMY_AIRCRAFT enemy_aircraft[max_enemy_num]; + ENEMY_AIRCRAFT_2 enemy_aircraft_2[max_enemy_num]; + ENEMY_MISSILE enemy_missile[max_enemy_missile_num]; + ENEMY_MISSILE enemy_missile_2[max_enemy_missile_num]; + ENERGY energy[max_enemy_num]; + ENERGY energy_2[max_enemy_num]; + BOSS_1 boss_1; + BOSS_2 boss_2; + ENEMY_MISSILE boss_1_missile[max_enemy_missile_num]; + ENEMY_MISSILE boss_2_missile[max_enemy_missile_num]; + BLOOD_PLUS blood[2]; + sf::Clock clock; + sf::Clock clock1; + sf::Clock clock2; + sf::Clock clock3; + sf::Clock clock4; + sf::Clock clock5; + sf::Clock clock6; + sf::Clock clock7; + sf::Clock clock8; + int if_my_aircraft_exist; + float renew_aircraft_time = 2, speed_multiple = 1; + int renew_boss_1_time = 18, renew_boss_2_time = 15; + int your_blood_number, your_energy_number, your_protected_blood, if_protect_exist, your_score=300, your_life = 3; + sf::RenderWindow window(sf::VideoMode(window_lenth, window_width), "SFML works!"); + while (your_life > 0) { + your_blood_number = 300; + your_energy_number = 300; + MY_AIRCRAFT *my_aircraft = new (MY_AIRCRAFT); + if_my_aircraft_exist = 1; + while (window.isOpen()) { + sf::Event event; + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) + window.close(); + } + //累积能量 + sf::Time elapsed1 = clock1.getElapsedTime(); + if (elapsed1.asSeconds()>1) { + your_energy_number += 5; + clock1.restart(); + if (your_energy_number > 300) { + your_energy_number = 300; + } + } + //显示分数,生命 + sf::Text text3; + text3.setFont(font); + char s1[100]; + sprintf_s(s1, "YOUR SCORE:%d\n", your_score); + text3.setString(s1); + text3.setCharacterSize(36); + text3.setFillColor(sf::Color::Blue); + text3.setPosition(window_lenth-400, 100); + sf::Text text4; + text4.setFont(font); + char s2[100]; + sprintf_s(s2, "YOUR LIFE:%d\n", your_life); + text4.setString(s2); + text4.setCharacterSize(36); + text4.setFillColor(sf::Color::White); + text4.setPosition(window_lenth-400,50); + sf::Time elapsed2 = clock2.getElapsedTime(); + if(elapsed2.asSeconds()>renew_aircraft_time){ + for (int j = 0; j < max_enemy_num; j++) { + if ((0 == enemy_aircraft[j].if_exist) && (0 == enemy_missile[j].if_exist)) { + enemy_aircraft[j].if_exist = 1; + enemy_aircraft[j].aircraft.setPosition(rand() % window_lenth, 0); + break; + } + } + clock2.restart(); + } + sf::Time elapsed8 = clock8.getElapsedTime(); + if (elapsed8.asSeconds() > 3*renew_aircraft_time) { + for (int j = 0; j < max_enemy_num; j++) { + if ((0 == enemy_aircraft_2[j].if_exist) && (0 == enemy_missile_2[j].if_exist)) { + enemy_aircraft_2[j].if_exist = 1; + enemy_aircraft_2[j].aircraft.setPosition(rand() % window_lenth, 0); + break; + } + } + clock8.restart(); + } + //刷新向下移动的敌机 + for (int j = 0; j window_width) { + enemy_aircraft[j].if_exist = 0; + } + } + } + //刷新左右来回移动的敌机 + for (int j = 0; j= window_lenth) { + enemy_aircraft_2[j].fly_way = 2; + } + if (enemy_aircraft_2[j].aircraft.getPosition().y > window_width) { + enemy_aircraft_2[j].if_exist = 0; + } + break; + } + } + //刷新向下移动的boss_1 + sf::Time elapsed3 = clock3.getElapsedTime(); + if ((elapsed3.asSeconds()>renew_boss_1_time)&&(your_score>150)) { + boss_1.if_exist = 1; + boss_1.life = 3; + boss_1.aircraft.setPosition(rand() % window_lenth, 0); + clock3.restart(); + } + if (1==boss_1.if_exist) { + boss_1.aircraft.move(0,move_speed_enemy_aircraft/2); + } + if(boss_1.aircraft.getPosition().y>window_width){ + boss_1.if_exist = 0; + } + //刷新向下移动的boss_2 + sf::Time elapsed4 = clock4.getElapsedTime(); + if ((elapsed4.asSeconds() > renew_boss_2_time)&&(your_score>300)) { + boss_2.if_exist = 1; + boss_2.life = 5; + boss_2.aircraft.setPosition(rand() % window_lenth, 0); + clock4.restart(); + } + if (1 == boss_2.if_exist) { + boss_2.aircraft.move(0, move_speed_enemy_aircraft/2); + } + if (boss_2.aircraft.getPosition().y>window_width) { + boss_2.if_exist = 0; + } + //产生敌机的子弹 + sf::Time elapsed5 = clock5.getElapsedTime(); + if (elapsed5.asSeconds() > 2.5) { + for (int j = 0; j < max_enemy_num; j++) { + if (1 == enemy_aircraft[j].if_exist) { + for (int i = 0; i < max_enemy_missile_num; i++) { + if (enemy_missile[i].if_exist == 0) { + enemy_missile[i].if_exist = 1; + enemy_missile[i].missile.setPosition(enemy_aircraft[j].aircraft.getPosition()); + break; + } + } + } + if (1 == enemy_aircraft_2[j].if_exist) { + for (int i = 0; i < max_enemy_missile_num; i++) { + if (enemy_missile_2[i].if_exist == 0) { + enemy_missile_2[i].if_exist = 1; + enemy_missile_2[i].missile.setPosition(enemy_aircraft_2[j].aircraft.getPosition()); + break; + } + } + } + } + if (1 == boss_1.if_exist) { + for (int i = 0; i < 10; i++) { + for (int j = 0; j < max_enemy_missile_num; j++) { + if (boss_1_missile[j].if_exist == 0) { + boss_1_missile[j].if_exist = 1; + boss_1_missile[j].missile.setPosition(boss_1.aircraft.getPosition()); + break; + } + } + } + } + clock5.restart(); + } + sf::Time elapsed6 = clock6.getElapsedTime(); + if (elapsed6.asSeconds() > 0.2) { + if (1 == boss_2.if_exist) { + for (int j = 0; j < max_enemy_missile_num; j++) { + if (boss_2_missile[j].if_exist == 0) { + boss_2_missile[j].if_exist = 1; + boss_2_missile[j].missile.setPosition(boss_2.aircraft.getPosition()); + clock6.restart(); + break; + } + } + } + } + //boss子弹轨迹方程 + for (int i = 0; i < max_enemy_missile_num; i++) { + float vx = 0.8*cos(PI*(i % 10) / 9.0); + float vy = 0.8*sin(PI*(i % 10) / 9.0); + if (boss_1_missile[i].if_exist == 1) { + boss_1_missile[i].missile.move(vx, vy); + } + } + for (int i = 0; i < max_enemy_missile_num; i++) { + float vx = speed_multiple*0.5*cos(PI*(i % 18) / 9.0); + float vy = speed_multiple*0.5*sin(PI*(i % 18) / 9.0); + if (boss_2_missile[i].if_exist == 1) { + boss_2_missile[i].missile.move(vx, vy); + } + } + //敌机子弹出边界处理 + for (int i = 0; i < max_enemy_missile_num; i++) { + if (enemy_missile[i].if_exist == 1) { + enemy_missile[i].missile.move(0, 1.5*move_speed_enemy_missile); + } + if (enemy_missile_2[i].if_exist == 1) { + enemy_missile_2[i].missile.move(0, move_speed_enemy_missile); + } + if (enemy_missile[i].missile.getPosition().y>window_width) { + enemy_missile[i].if_exist = 0; + } + if (enemy_missile_2[i].missile.getPosition().y>window_width) { + enemy_missile_2[i].if_exist = 0; + } + } + //boss飞出边界对子弹和敌机的处理 + if (boss_1.aircraft.getPosition().y>window_width) { + boss_1.if_exist = 0; + } + if (boss_2.aircraft.getPosition().y>window_width) { + boss_2.if_exist = 0; + } + if (boss_1.if_exist == 0) { + for (int i = 0; i < max_enemy_missile_num; i++) { + sf::Vector2f boss_1_position=boss_1_missile[i].missile.getPosition(); + if ((boss_1_position.x<0)||(boss_1_position.x>window_lenth)||(boss_1_position.y>window_lenth)) { + boss_1_missile[i].if_exist = 0; + } + } + } + if (boss_2.if_exist == 0) { + for (int i = 0; i < max_enemy_missile_num; i++) { + sf::Vector2f boss_2_position = boss_2_missile[i].missile.getPosition(); + if ((boss_2_position.x<0) || (boss_2_position.x>window_lenth) || (boss_2_position.y>window_lenth)) { + boss_2_missile[i].if_exist = 0; + } + } + } + //移动我方战机 + move_aircraft(my_aircraft->aircraft); + //发射我方向上移动的子弹 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) { + sf::Time elapsed = clock.getElapsedTime(); + if (elapsed.asSeconds() > 0.08) { + fire.play(); + for (int i = 0; i < max_my_missile_num; i++) { + if (0 == my_missile[i].if_exist) { + my_missile[i].if_exist = 1; + my_missile[i].missile.setPosition(my_aircraft->aircraft.getPosition()); + clock.restart(); + break; + } + } + } + } + //我方子弹飞出边界处理 + for (int i = 0; i < max_my_missile_num; i++) { + if (1 == my_missile[i].if_exist) { + my_missile[i].missile.move(0, -move_speed_my_missle); + } + if (my_missile[i].missile.getPosition().y < 0) { + my_missile[i].if_exist = 0; + } + } + //击毁敌机,产生能量 + for (int j = 0; j < max_enemy_num; j++) { + if (1 == energy[j].if_exist) { + energy[j].missile.move(0, move_speed_energy); + } + if (1 == energy_2[j].if_exist) { + energy_2[j].missile.move(0, move_speed_energy); + } + if (energy[j].missile.getPosition().y >= window_width) { + energy[j].if_exist = 0; + } + if (energy_2[j].missile.getPosition().y >= window_width) { + energy_2[j].if_exist = 0; + } + } + //boss死亡,产生生命补给包 + for (int i = 0; i < 2; i++) { + if (1 == blood[i].if_exist) { + blood[i].missile.move(0, move_speed_energy); + } + if (blood[i].missile.getPosition().y >= window_width) { + blood[i].if_exist = 0; + } + } + sf::FloatRect boundingBox = my_aircraft->aircraft.getGlobalBounds(); + for (int i = 0; i < max_my_missile_num; i++) { + //子弹射中敌机 + for (int j = 0; j < max_enemy_num; j++) { + if ((1 == my_missile[i].if_exist) && (1 == enemy_aircraft[j].if_exist)) { + sf::FloatRect boundingBox1= enemy_aircraft[j].aircraft.getGlobalBounds(); + sf::FloatRect boundingBox2 = my_missile[i].missile.getGlobalBounds(); + if (boundingBox1.intersects(boundingBox2)) { + enemy_boom.play(); + energy[j].if_exist = 1; + energy[j].missile.setPosition(enemy_aircraft[j].aircraft.getPosition()); + my_missile[i].if_exist = 0; + enemy_aircraft[j].if_exist = 0; + your_score += 5; + } + } + if ((1 == my_missile[i].if_exist) && (1 == enemy_aircraft_2[j].if_exist)) { + sf::FloatRect boundingBox1 = enemy_aircraft_2[j].aircraft.getGlobalBounds(); + sf::FloatRect boundingBox2 = my_missile[i].missile.getGlobalBounds(); + if (boundingBox1.intersects(boundingBox2)) { + enemy_boom.play(); + energy_2[j].if_exist = 1; + energy_2[j].missile.setPosition(enemy_aircraft_2[j].aircraft.getPosition()); + my_missile[i].if_exist = 0; + enemy_aircraft_2[j].if_exist = 0; + your_score += 5; + } + } + } + //子弹射中boss_1 + if ((1 == my_missile[i].if_exist) && (1 == boss_1.if_exist)) { + sf::FloatRect boundingBox1 = boss_1.aircraft.getGlobalBounds(); + sf::FloatRect boundingBox2 = my_missile[i].missile.getGlobalBounds(); + if (boundingBox1.intersects(boundingBox2)) { + my_missile[i].if_exist = 0; + boss_1.life--; + if (boss_1.life == 0) { + boss_boom.play(); + for (int j = 0; j < 2; j++) { + if (blood[j].if_exist == 0) { + blood[j].if_exist = 1; + blood[j].missile.setPosition(boss_1.aircraft.getPosition()); + break; + } + } + your_score += 30; + boss_1.if_exist = 0; + } + } + } + //子弹射中boss_2 + if ((1 == my_missile[i].if_exist) && (1 == boss_2.if_exist)) { + sf::FloatRect boundingBox1 = boss_2.aircraft.getGlobalBounds(); + sf::FloatRect boundingBox2 = my_missile[i].missile.getGlobalBounds(); + if (boundingBox1.intersects(boundingBox2)) { + boss_boom.play(); + my_missile[i].if_exist = 0; + boss_2.life--; + if (boss_2.life == 0) { + boss_boom.play(); + for (int j = 0; j < 2; j++) { + if (blood[j].if_exist == 0) { + blood[j].if_exist = 1; + blood[j].missile.setPosition(boss_2.aircraft.getPosition()); + break; + } + } + your_score += 30; + boss_2.if_exist = 0; + } + } + } + } + //获得能量 + for (int j = 0; j < max_enemy_num; j++) { + if (1 == energy[j].if_exist) { + sf::FloatRect boundingBox1= energy[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + energy[j].if_exist = 0; + your_energy_number += 5; + if (your_energy_number > 300) { + your_energy_number = 300; + } + } + } + if (1 == energy_2[j].if_exist) { + sf::FloatRect boundingBox1 = energy_2[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + energy_2[j].if_exist = 0; + your_energy_number += 5; + if (your_energy_number > 300) { + your_energy_number = 300; + } + } + } + } + //获得血包 + for (int j = 0; j < 2; j++) { + if (1 == blood[j].if_exist) { + sf::FloatRect boundingBox1 = blood[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + blood[j].if_exist = 0; + your_blood_number +=20; + if (your_blood_number > 300) { + your_blood_number = 300; + } + } + } + } + //与敌机碰撞 + for (int j = 0; j < max_enemy_num; j++) { + if (1 == enemy_aircraft[j].if_exist) { + sf::FloatRect boundingBox1 = enemy_aircraft[j].aircraft.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_boom.play(); + enemy_aircraft[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 20; + } + else { + your_blood_number -= 20; + } + break; + } + } + if (1 == enemy_aircraft_2[j].if_exist) { + sf::FloatRect boundingBox1 = enemy_aircraft_2[j].aircraft.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_boom.play(); + enemy_aircraft_2[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 20; + } + else { + your_blood_number -= 20; + } + break; + } + } + } + //与boss_1碰撞 + if (1 == boss_1.if_exist) { + sf::FloatRect boundingBox1 = boss_1.aircraft.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_boom.play(); + boss_1.if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 80; + } + else { + your_blood_number -= 80; + } + } + } + //与boss_2碰撞 + if (1 == boss_2.if_exist) { + sf::FloatRect boundingBox1 = boss_2.aircraft.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_boom.play(); + boss_2.if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 50; + } + else { + your_blood_number -= 50; + } + } + } + //被敌机子弹射中 + for (int j = 0; j < max_enemy_missile_num; j++) { + if (1 == enemy_missile[j].if_exist) { + sf::FloatRect boundingBox1 = enemy_missile[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_missile[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 10; + } + else { + your_blood_number -= 10; + } + break; + } + } + if (1 == enemy_missile_2[j].if_exist) { + sf::FloatRect boundingBox1 = enemy_missile_2[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + enemy_missile_2[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 10; + } + else { + your_blood_number -= 10; + } + break; + } + } + } + //被boss_1子弹射中 + for (int j = 0; j < max_enemy_missile_num; j++) { + if (1 == boss_1_missile[j].if_exist) { + sf::FloatRect boundingBox1= boss_1_missile[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + boss_1_missile[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 20; + } + else { + your_blood_number -= 20; + } + break; + } + } + } + //被boss_2子弹射中 + for (int j = 0; j < max_enemy_missile_num; j++) { + if (1 == boss_2_missile[j].if_exist) { + sf::FloatRect boundingBox1 = boss_2_missile[j].missile.getGlobalBounds(); + if (boundingBox.intersects(boundingBox1)) { + boss_2_missile[j].if_exist = 0; + if (1 == if_protect_exist) { + your_protected_blood -= 30; + } + else { + your_blood_number -= 30; + } + break; + } + } + } + //血量 + sf::VertexArray quad1(sf::Quads, 4); + quad1[0].position = sf::Vector2f(10, 10); + quad1[1].position = sf::Vector2f(10 + your_blood_number, 10); + quad1[2].position = sf::Vector2f(10 + your_blood_number, 30); + quad1[3].position = sf::Vector2f(10, 30); + quad1[0].color = sf::Color::Red; + quad1[1].color = sf::Color::Red; + quad1[2].color = sf::Color::Red; + quad1[3].color = sf::Color::Red; + //能量 + sf::VertexArray quad2(sf::Quads, 4); + quad2[0].position = sf::Vector2f(10, 50); + quad2[1].position = sf::Vector2f(10, 70); + quad2[2].position = sf::Vector2f(10+your_energy_number, 70); + quad2[3].position = sf::Vector2f(10+ your_energy_number, 50); + quad2[0].color = sf::Color::Green; + quad2[1].color = sf::Color::Green; + quad2[2].color = sf::Color::Green; + quad2[3].color = sf::Color::Green; + window.clear(); + window.draw(background); + window.draw(quad1); + window.draw(quad2); + window.draw(my_aircraft->aircraft); + window.draw(text3); + window.draw(text4); + //死亡,生命-1 + if (your_blood_number <= 0) { + if_my_aircraft_exist = 0; + your_life--; + } + //使用1技能 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Z) && (your_energy_number >= 100)) { + sf::Time elapsed7 = clock7.getElapsedTime(); + if (elapsed7.asSeconds() > 0.5) { + if_protect_exist = 1; + your_protected_blood = 100; + your_energy_number -= 100; + clock7.restart(); + } + } + if (1 == if_protect_exist) { + if (your_blood_number + your_protected_blood <= 300) { + sf::VertexArray quad3(sf::Quads, 4); + quad3[0].position = sf::Vector2f(10 + your_blood_number, 10); + quad3[1].position = sf::Vector2f(10 + your_blood_number, 30); + quad3[2].position = sf::Vector2f(10 + your_blood_number + your_protected_blood, 30); + quad3[3].position = sf::Vector2f(10 + your_blood_number + your_protected_blood, 10); + quad3[0].color = sf::Color::White; + quad3[1].color = sf::Color::White; + quad3[2].color = sf::Color::White; + quad3[3].color = sf::Color::White; + window.draw(quad3); + } + if ((your_blood_number + your_protected_blood > 300) && (your_blood_number != 300)) { + sf::VertexArray quad4(sf::Quads, 4); + quad4[0].position = sf::Vector2f(10 + your_blood_number, 30); + quad4[1].position = sf::Vector2f(10 + your_blood_number, 10); + quad4[2].position = sf::Vector2f(310, 10); + quad4[3].position = sf::Vector2f(310, 30); + quad4[0].color = sf::Color::White; + quad4[1].color = sf::Color::White; + quad4[2].color = sf::Color::White; + quad4[3].color = sf::Color::White; + window.draw(quad4); + } + if ((your_blood_number + your_protected_blood > 300) && (your_blood_number == 300)) { + sf::VertexArray quad5(sf::Quads, 4); + quad5[0].position = sf::Vector2f(310, 30); + quad5[1].position = sf::Vector2f(310, 10); + quad5[2].position = sf::Vector2f(310 - your_protected_blood, 10); + quad5[3].position = sf::Vector2f(310 - your_protected_blood, 30); + quad5[0].color = sf::Color::White; + quad5[1].color = sf::Color::White; + quad5[2].color = sf::Color::White; + quad5[3].color = sf::Color::White; + window.draw(quad5); + } + } + if (your_protected_blood <= 0){ + if_protect_exist = 0; + } + if (1 == if_protect_exist) { + sf::CircleShape shape(75); + shape.setFillColor(sf::Color::Transparent); + shape.setOrigin(75, 75); + shape.setPosition(my_aircraft->aircraft.getPosition()); + shape.setOutlineThickness(10); + shape.setOutlineColor(sf::Color(250, 150, 100)); + window.draw(shape); + } + //使用2技能 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::X) && (your_energy_number >= 200)) { + int index_x = 0; + int index_y = window_width; + for (int i = max_my_missile_num - 30; i < max_my_missile_num; i++) { + my_missile[i].if_exist = 1; + } + index_y = window_width - 50; + for (int i = max_my_missile_num - 30; i < max_my_missile_num - 20; i++) { + index_x += window_lenth / 10; + my_missile[i].missile.setPosition(index_x, index_y); + } + index_y -= 50; + index_x = 0; + for (int i = max_my_missile_num - 20; i < max_my_missile_num - 10; i++) { + index_x += window_lenth / 10; + my_missile[i].missile.setPosition(index_x, index_y); + } + index_y -= 50; index_x = 0; + for (int i = max_my_missile_num - 10; i < max_my_missile_num; i++) { + index_x += window_lenth / 10; + my_missile[i].missile.setPosition(index_x, index_y); + } + your_energy_number -= 200; + } + if (your_energy_number >= 100) { + window.draw(text1); + } + if (your_energy_number >= 200) { + window.draw(text2); + } + //绘制我方子弹 + for (int i = 0; i < max_my_missile_num; i++) { + if (1 == my_missile[i].if_exist) { + window.draw(my_missile[i].missile); + } + } + //绘制敌机 + for (int j = 0; j < max_enemy_num; j++) { + if (1 == enemy_aircraft[j].if_exist) { + window.draw(enemy_aircraft[j].aircraft); + } + if (1 == enemy_aircraft_2[j].if_exist) { + window.draw(enemy_aircraft_2[j].aircraft); + } + } + //绘制敌机子弹 + for (int j = 0; j < max_enemy_missile_num; j++) { + if (1 == enemy_missile[j].if_exist) { + window.draw(enemy_missile[j].missile); + } + if (1 == enemy_missile_2[j].if_exist) { + window.draw(enemy_missile_2[j].missile); + } + if (1 == boss_1_missile[j].if_exist) { + window.draw(boss_1_missile[j].missile); + } + if (1 == boss_2_missile[j].if_exist) { + window.draw(boss_2_missile[j].missile); + } + } + //绘制boss + if (1 == boss_1.if_exist) { + window.draw(boss_1.aircraft); + } + if (1 == boss_2.if_exist) { + window.draw(boss_2.aircraft); + } + //绘制能量 + for (int j = 0; j < max_enemy_num; j++) { + if (1 == energy[j].if_exist) { + window.draw(energy[j].missile); + } + if (1 == energy_2[j].if_exist) { + window.draw(energy_2[j].missile); + } + } + for (int j = 0; j < 2; j++) { + if (1 == blood[j].if_exist) { + window.draw(blood[j].missile); + } + } + //改变敌机刷新时间 + if ((your_score % 100 == 0) && (your_score<=500)){ + renew_aircraft_time -= 0.2; + your_score += 5; + } + //改变boss_1刷新时间 + if ((your_score%150==0) && (your_score<=1050)) { + renew_boss_1_time -= 1; + your_score += 5; + } + //改变boss_2刷新时间 + if ((your_score % 200 == 0) && (your_score <= 1200)) { + renew_boss_2_time -= 1; + speed_multiple += 0.2; + your_score += 5; + } + if ((0 == if_my_aircraft_exist) &&(your_life!=0)){ + blood[0].if_exist = 0; + blood[1].if_exist = 0; + for (int j = 0; j < max_enemy_num; j++) { + enemy_aircraft[j].if_exist = 0; + energy[j] .if_exist= 0; + } + for (int j = 0; j < max_my_missile_num; j++) { + my_missile[j].if_exist = 0; + } + for (int j = 0; j < max_enemy_missile_num; j++) { + enemy_missile[j].if_exist = 0; + boss_1_missile[j].if_exist= 0; + boss_2_missile[j].if_exist= 0; + boss_1.if_exist = 0; + boss_2.if_exist = 0; + } + i_boom.play(); + window.draw(death_picture); + window.display(); + Sleep(3000); + break; + } + if ((0 == if_my_aircraft_exist) && (your_life == 0)) { + if (your_life == 0) { + sf::Text text5; + text5.setFont(font); + char s3[100]; + sprintf_s(s3, "YOUR FINAL SCORE:%d\n", your_score); + text5.setString(s3); + text5.setCharacterSize(54); + text5.setFillColor(sf::Color::Red); + text5.setPosition(window_lenth/2-300 , 200); + window.draw(game_over); + window.draw(text5); + window.display(); + Sleep(5000); + break; + } + } + window.display(); + } + } + return 0; +}