From 8ae08923523d90b8fd435eeb4102c2a1573fd1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 23 Feb 2017 10:33:22 +0800 Subject: [PATCH 01/54] Create C0 --- practices/c/level0/C0 | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 practices/c/level0/C0 diff --git a/practices/c/level0/C0 b/practices/c/level0/C0 new file mode 100644 index 00000000..f9a33167 --- /dev/null +++ b/practices/c/level0/C0 @@ -0,0 +1,8 @@ +# include + +int main() +{ + printf("Hello World! I'm 李帅锋!\n"); + + return 0; +} From 0d37b80c61a3b1075d3d42c4d32d5d5a402d9097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 23 Feb 2017 10:54:45 +0800 Subject: [PATCH 02/54] Create C1 --- practices/c/level0/C1 | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 practices/c/level0/C1 diff --git a/practices/c/level0/C1 b/practices/c/level0/C1 new file mode 100644 index 00000000..995794b2 --- /dev/null +++ b/practices/c/level0/C1 @@ -0,0 +1,23 @@ +# include + +int main() +{ + int input; + scanf("%d",&input); + + if(input>0){ + if(input%2==0){ + printf("是正数而且是偶数\n"); + } + else { + printf("是正数但不是偶数\n"); + } + } + else if(input==0){ + printf("既不是正数也不是负数\n"); + } + else{ + printf("是负数\n"); + } + return 0; +} From 459abc51c24a19dbeb841870c6dbcc1fc54b5d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 23 Feb 2017 11:13:14 +0800 Subject: [PATCH 03/54] Create p01 --- practices/c/level1/p01_runningLetter/p01 | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 practices/c/level1/p01_runningLetter/p01 diff --git a/practices/c/level1/p01_runningLetter/p01 b/practices/c/level1/p01_runningLetter/p01 new file mode 100644 index 00000000..d3c4dec9 --- /dev/null +++ b/practices/c/level1/p01_runningLetter/p01 @@ -0,0 +1,26 @@ +# include +# include + +int main() +{ + int i,j; + for(i=0;i<12;i++){ + for(j=0;j0;i--){ + for(j=0;j Date: Thu, 23 Feb 2017 11:45:25 +0800 Subject: [PATCH 04/54] Create p02 --- practices/c/level1/p02_isPrime/p02 | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 practices/c/level1/p02_isPrime/p02 diff --git a/practices/c/level1/p02_isPrime/p02 b/practices/c/level1/p02_isPrime/p02 new file mode 100644 index 00000000..3c49ef16 --- /dev/null +++ b/practices/c/level1/p02_isPrime/p02 @@ -0,0 +1,24 @@ +# include + +int main() +{ + int i,x = 0; + int infox=-1; + scanf("%d",&x); + + for( i=2;i Date: Thu, 23 Feb 2017 20:27:15 +0800 Subject: [PATCH 05/54] Create p04 --- practices/c/level1/p04_ narcissus/p04 | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 practices/c/level1/p04_ narcissus/p04 diff --git a/practices/c/level1/p04_ narcissus/p04 b/practices/c/level1/p04_ narcissus/p04 new file mode 100644 index 00000000..a83515e3 --- /dev/null +++ b/practices/c/level1/p04_ narcissus/p04 @@ -0,0 +1,19 @@ +# include +# include + +int main() +{ + int number = 153; + + for(number=100;number<1000;number++){ + + int number1 = number/100; + int number2 = (number%100)/10; + int number3 = number%10; + if(number==pow(number1,3)+pow(number2,3)+pow(number3,3)){ + printf("%d\n",number); + } + } + + return 0; + } From 68ca0ecd23ae7ee2db513b6ff6128c0a2d03fb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 23 Feb 2017 20:49:58 +0800 Subject: [PATCH 06/54] Create p05 --- practices/c/level1/p05_allPrimes/p05 | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 practices/c/level1/p05_allPrimes/p05 diff --git a/practices/c/level1/p05_allPrimes/p05 b/practices/c/level1/p05_allPrimes/p05 new file mode 100644 index 00000000..c6de3779 --- /dev/null +++ b/practices/c/level1/p05_allPrimes/p05 @@ -0,0 +1,21 @@ +# include + + +int main() +{ + int num; + int fox = 0; + for(num=2;num<2000;num++){ + for(int i=2;i Date: Mon, 6 Mar 2017 21:42:48 +0800 Subject: [PATCH 07/54] Rename C0 to helloworld.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 谢谢老师!!! --- practices/c/level0/{C0 => helloworld.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/c/level0/{C0 => helloworld.c} (100%) diff --git a/practices/c/level0/C0 b/practices/c/level0/helloworld.c similarity index 100% rename from practices/c/level0/C0 rename to practices/c/level0/helloworld.c From 5c2685183d4d2de0a6fb5d10311fe56d097a3e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 6 Mar 2017 21:46:01 +0800 Subject: [PATCH 08/54] Update and rename p02 to p02-isPrime.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 也不知道之前写的时候怎么就多了个括号,哈哈 --- practices/c/level1/p02_isPrime/{p02 => p02-isPrime.c} | 1 - 1 file changed, 1 deletion(-) rename practices/c/level1/p02_isPrime/{p02 => p02-isPrime.c} (98%) diff --git a/practices/c/level1/p02_isPrime/p02 b/practices/c/level1/p02_isPrime/p02-isPrime.c similarity index 98% rename from practices/c/level1/p02_isPrime/p02 rename to practices/c/level1/p02_isPrime/p02-isPrime.c index 3c49ef16..ad44a39e 100644 --- a/practices/c/level1/p02_isPrime/p02 +++ b/practices/c/level1/p02_isPrime/p02-isPrime.c @@ -12,7 +12,6 @@ int main() } } - } if(infox==-1){ printf("是素数\n"); } From 07caa6d458d87a6ba017d8a5bf31d6941f4c3491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 6 Mar 2017 21:48:43 +0800 Subject: [PATCH 09/54] Rename C1 to c1panduanshu.c --- practices/c/level0/{C1 => c1panduanshu.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/c/level0/{C1 => c1panduanshu.c} (100%) diff --git a/practices/c/level0/C1 b/practices/c/level0/c1panduanshu.c similarity index 100% rename from practices/c/level0/C1 rename to practices/c/level0/c1panduanshu.c From e73f43be3b8aa64a27fca50558937200810d88cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 6 Mar 2017 21:58:12 +0800 Subject: [PATCH 10/54] Rename p04 to p04 shuixianshu.c --- practices/c/level1/p04_ narcissus/{p04 => p04 shuixianshu.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/c/level1/p04_ narcissus/{p04 => p04 shuixianshu.c} (100%) diff --git a/practices/c/level1/p04_ narcissus/p04 b/practices/c/level1/p04_ narcissus/p04 shuixianshu.c similarity index 100% rename from practices/c/level1/p04_ narcissus/p04 rename to practices/c/level1/p04_ narcissus/p04 shuixianshu.c From 3081dd59c0e28d1ce1a7f9ff5b11fa318b4ba394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 6 Mar 2017 21:59:03 +0800 Subject: [PATCH 11/54] Rename p05 to p05-allPrimes.c --- practices/c/level1/p05_allPrimes/{p05 => p05-allPrimes.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/c/level1/p05_allPrimes/{p05 => p05-allPrimes.c} (100%) diff --git a/practices/c/level1/p05_allPrimes/p05 b/practices/c/level1/p05_allPrimes/p05-allPrimes.c similarity index 100% rename from practices/c/level1/p05_allPrimes/p05 rename to practices/c/level1/p05_allPrimes/p05-allPrimes.c From afdfd6902d15f93045facfd48789751f8f18439b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 27 Mar 2017 21:12:08 +0800 Subject: [PATCH 12/54] Create RunningLetter.c --- .../level1/p01_runningLetter/RunningLetter.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 practices/c/level1/p01_runningLetter/RunningLetter.c diff --git a/practices/c/level1/p01_runningLetter/RunningLetter.c b/practices/c/level1/p01_runningLetter/RunningLetter.c new file mode 100644 index 00000000..d3c4dec9 --- /dev/null +++ b/practices/c/level1/p01_runningLetter/RunningLetter.c @@ -0,0 +1,26 @@ +# include +# include + +int main() +{ + int i,j; + for(i=0;i<12;i++){ + for(j=0;j0;i--){ + for(j=0;j Date: Tue, 28 Mar 2017 08:29:23 +0800 Subject: [PATCH 13/54] Create isprime.c --- practices/c/level1/p02_isPrime/isprime.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 practices/c/level1/p02_isPrime/isprime.c diff --git a/practices/c/level1/p02_isPrime/isprime.c b/practices/c/level1/p02_isPrime/isprime.c new file mode 100644 index 00000000..ad44a39e --- /dev/null +++ b/practices/c/level1/p02_isPrime/isprime.c @@ -0,0 +1,23 @@ +# include + +int main() +{ + int i,x = 0; + int infox=-1; + scanf("%d",&x); + + for( i=2;i Date: Sat, 1 Apr 2017 18:25:32 +0800 Subject: [PATCH 14/54] Create Diophantus.c --- practices/c/level1/p03_Diophantus/Diophantus.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 practices/c/level1/p03_Diophantus/Diophantus.c diff --git a/practices/c/level1/p03_Diophantus/Diophantus.c b/practices/c/level1/p03_Diophantus/Diophantus.c new file mode 100644 index 00000000..3aab1050 --- /dev/null +++ b/practices/c/level1/p03_Diophantus/Diophantus.c @@ -0,0 +1,12 @@ +#include + +int main(void) +{ + int age; + // age/6+age/12+age/7+5 = age-age/2-4 + + age = 28*9/3; + printf("when diophantus's child dead,diophantus was :%d years old.",age-4); + + return 0; + } From 836bce30665a5c3459b44550f6d87d0c036bc881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sat, 1 Apr 2017 18:36:13 +0800 Subject: [PATCH 15/54] Create narcissus.c --- practices/c/level1/p04_ narcissus/narcissus.c | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 practices/c/level1/p04_ narcissus/narcissus.c diff --git a/practices/c/level1/p04_ narcissus/narcissus.c b/practices/c/level1/p04_ narcissus/narcissus.c new file mode 100644 index 00000000..8ad291e0 --- /dev/null +++ b/practices/c/level1/p04_ narcissus/narcissus.c @@ -0,0 +1,23 @@ +#include +# include + +int main(void) +{ + int shuixianshu; + int baiwei,shiwei,gewei; + + printf("三位水仙数如下:\n"); + + for(int i = 100;i<1000;i++){ + baiwei = i/100; + shiwei = (i%100)/10; + gewei = i%10; + + if(i==pow(baiwei,3)+pow(shiwei,3)+pow(gewei,3)){ + shuixianshu = i; + printf("%d\t",shuixianshu); + } + } + + return 0; + } From b961323193b741e750595dd5c78d7ad3fc213889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sat, 1 Apr 2017 19:28:24 +0800 Subject: [PATCH 16/54] Create allPrimers.c --- practices/c/level1/p05_allPrimes/allPrimers.c | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 practices/c/level1/p05_allPrimes/allPrimers.c diff --git a/practices/c/level1/p05_allPrimes/allPrimers.c b/practices/c/level1/p05_allPrimes/allPrimers.c new file mode 100644 index 00000000..2af8fa95 --- /dev/null +++ b/practices/c/level1/p05_allPrimes/allPrimers.c @@ -0,0 +1,44 @@ +#include +#include + +int isPrimer(int num); + +int main() +{ + clock_t start,finish; + start = clock(); + int primer; + + + for(int i = 2;i<=1000;i++){ + primer = isPrimer(i); + if(primer){ + printf("%d\n",i); + } + } + + printf("the running time is:\t"); + finish = clock(); + double time = (double)(finish-start)*1000/CLOCKS_PER_SEC; + printf("%lf ms",time); + + return 0; + } + + int isPrimer(int num){ + int result = 0; + int cnt = 0; + + for(int i = 2;i<=sqrt(num);i++){ + if(num%i==0) { + cnt++; + break; + } + } + + if(cnt==0){ + result = 1; + } + + return result; + } From a05d35e0d97f20b3498f7e31bf720fa54d0f8a1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sat, 1 Apr 2017 19:46:52 +0800 Subject: [PATCH 17/54] Create Goldbach.c --- practices/c/level1/p06_Goldbach/Goldbach.c | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 practices/c/level1/p06_Goldbach/Goldbach.c diff --git a/practices/c/level1/p06_Goldbach/Goldbach.c b/practices/c/level1/p06_Goldbach/Goldbach.c new file mode 100644 index 00000000..8f1be60c --- /dev/null +++ b/practices/c/level1/p06_Goldbach/Goldbach.c @@ -0,0 +1,52 @@ +#include +#include + +int isPrimer(int num); + +int main() +{ + int primer[25]; + int cnt = 0; + for(int i = 2;i<100;i++){ + if(isPrimer(i)) { + primer[cnt] = i; + cnt++; + } + } + + for(int i=3;i<=100;i++){ + if(i%2==0){ + for(int m = 0;m<=25;m++){ + for(int n = 0;n<=25;n++){ + if(primer[m]+primer[n]==i){ + printf("%d=%d+%d\n",i,primer[m],primer[n]); + } + } + } + } + } + + printf("So,we can learn that Goldbach's suspect is right in 0-100.\n"); + return 0; + } + + int isPrimer(int num){ + int result = 0; + int cnt = 0; + + for(int i = 2;i<=sqrt(num);i++){ + if(num%i==0) { + cnt++; + break; + } + } + + if(cnt==0){ + result = 1; + } + + return result; + } + + + From 413d81a2d68b85aee9124ed599c6682e6f5ddfec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sun, 2 Apr 2017 00:04:48 +0800 Subject: [PATCH 18/54] Create hanoi.c --- practices/c/level1/p08_hanoi/hanoi.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 practices/c/level1/p08_hanoi/hanoi.c diff --git a/practices/c/level1/p08_hanoi/hanoi.c b/practices/c/level1/p08_hanoi/hanoi.c new file mode 100644 index 00000000..100684da --- /dev/null +++ b/practices/c/level1/p08_hanoi/hanoi.c @@ -0,0 +1,28 @@ +# include + +int i= 0; + +int main() +{ + int N; + printf("input positive integer N: "); + scanf("%d",&N); + + move('a','b','c',N); + + printf("these are all steps!"); + return 0; + } + + void move(char str1,char str2,char str3,int n) + { + if(n==1){ + printf("the %dst step:\t",++i); + printf("%c->%c\n",str1,str3); + }else{ + move(str1,str3,str2,n-1); + printf("the %dst step:\t",++i); + printf("%c->%c\n",str1,str3); + move(str2,str1,str3,n-1); + } + } From af0a055142521f75092bf761cdb4f182976edd02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Fri, 7 Apr 2017 16:58:30 +0800 Subject: [PATCH 19/54] Create maze.c --- practices/c/level1/p09_maze/maze.c | 110 +++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 practices/c/level1/p09_maze/maze.c diff --git a/practices/c/level1/p09_maze/maze.c b/practices/c/level1/p09_maze/maze.c new file mode 100644 index 00000000..26706193 --- /dev/null +++ b/practices/c/level1/p09_maze/maze.c @@ -0,0 +1,110 @@ +# include +# include +#include +# define SIZE 10 + +int maze[SIZE][SIZE] = { + 1,1,1,1,1,1,1,1,1,1, + 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, + 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, + 1,0,0,1,0,1,1,1,0,1, + 1,1,0,1,0,1,0,0,1,1, + 1,0,0,1,0,0,0,1,0,1, + 1,1,0,0,1,1,1,0,0,1, + 1,1,1,0,0,0,1,1,0,1, + 1,0,0,0,1,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1 + +}; + +void begin() +{ + printf("this is a small maze game\n"); + printf("please enter any key to continue..."); + getchar(); + system("cls"); + for (int i = 0; i < 40; i++) { + printf("Maze generation..."); + system("cls"); + } +} + +void show_maze(int prex,int prey,char c,int cnt) +{ + system("cls"); + int i, j; + + for ( i = 0; i < SIZE; i++) { + for ( j = 0; j < SIZE; j++) { + if (maze[i][j]==1) printf("%c%c", 0xa8, 0x80); + else if (i == prey&&j == prex) printf("**"); + else printf(" "); + if (j == SIZE - 1) printf("\n"); + } + } + if (cnt) { + printf("You can't head to a wall!!\n"); + } +} + +int ifhead(int *nowx, int *nowy,char c) +{ + if (maze[*nowy][*nowx] == 1) { + + switch (c) + { + case 72: + *nowy += 1; + break; + case 75: + *nowx += 1; + break; + case 80: + *nowy -= 1; + break; + case 77: + *nowx -= 1; + break; + } + return 1; + } + return 0; +} + +int main() +{ + int k = 0, cnt = 0; + int nowx = 1, nowy = 1; + begin(); + show_maze(1,1,0,cnt); + + while (1) { + char c = _getch(); + + switch (c) + { + case 72: + nowy -= 1; + break; + case 75: + nowx -= 1; + break; + case 80: + nowy += 1; + break; + case 77: + nowx += 1; + break; + } + cnt = ifhead(&nowx, &nowy, c); + show_maze(nowx, nowy, c,cnt); + + if (nowx == SIZE - 2 && nowy == SIZE - 2) { + printf("Congratulations,You have passed this game!\n"); + break; + } + } + + system("pause"); + return 0; +} From 090a2971f670853d30ac0582734f1e794f162583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sun, 9 Apr 2017 22:59:51 +0800 Subject: [PATCH 20/54] Delete p01 --- practices/c/level1/p01_runningLetter/p01 | 26 ------------------------ 1 file changed, 26 deletions(-) delete mode 100644 practices/c/level1/p01_runningLetter/p01 diff --git a/practices/c/level1/p01_runningLetter/p01 b/practices/c/level1/p01_runningLetter/p01 deleted file mode 100644 index d3c4dec9..00000000 --- a/practices/c/level1/p01_runningLetter/p01 +++ /dev/null @@ -1,26 +0,0 @@ -# include -# include - -int main() -{ - int i,j; - for(i=0;i<12;i++){ - for(j=0;j0;i--){ - for(j=0;j Date: Sun, 9 Apr 2017 23:00:44 +0800 Subject: [PATCH 21/54] Delete p02-isPrime.c --- practices/c/level1/p02_isPrime/p02-isPrime.c | 23 -------------------- 1 file changed, 23 deletions(-) delete mode 100644 practices/c/level1/p02_isPrime/p02-isPrime.c diff --git a/practices/c/level1/p02_isPrime/p02-isPrime.c b/practices/c/level1/p02_isPrime/p02-isPrime.c deleted file mode 100644 index ad44a39e..00000000 --- a/practices/c/level1/p02_isPrime/p02-isPrime.c +++ /dev/null @@ -1,23 +0,0 @@ -# include - -int main() -{ - int i,x = 0; - int infox=-1; - scanf("%d",&x); - - for( i=2;i Date: Sun, 9 Apr 2017 23:01:21 +0800 Subject: [PATCH 22/54] Delete p04 shuixianshu.c --- .../c/level1/p04_ narcissus/p04 shuixianshu.c | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 practices/c/level1/p04_ narcissus/p04 shuixianshu.c diff --git a/practices/c/level1/p04_ narcissus/p04 shuixianshu.c b/practices/c/level1/p04_ narcissus/p04 shuixianshu.c deleted file mode 100644 index a83515e3..00000000 --- a/practices/c/level1/p04_ narcissus/p04 shuixianshu.c +++ /dev/null @@ -1,19 +0,0 @@ -# include -# include - -int main() -{ - int number = 153; - - for(number=100;number<1000;number++){ - - int number1 = number/100; - int number2 = (number%100)/10; - int number3 = number%10; - if(number==pow(number1,3)+pow(number2,3)+pow(number3,3)){ - printf("%d\n",number); - } - } - - return 0; - } From 6424039842f5b999fc3f0201613eaebea01cc8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sun, 9 Apr 2017 23:01:41 +0800 Subject: [PATCH 23/54] Delete p05-allPrimes.c --- .../c/level1/p05_allPrimes/p05-allPrimes.c | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 practices/c/level1/p05_allPrimes/p05-allPrimes.c diff --git a/practices/c/level1/p05_allPrimes/p05-allPrimes.c b/practices/c/level1/p05_allPrimes/p05-allPrimes.c deleted file mode 100644 index c6de3779..00000000 --- a/practices/c/level1/p05_allPrimes/p05-allPrimes.c +++ /dev/null @@ -1,21 +0,0 @@ -# include - - -int main() -{ - int num; - int fox = 0; - for(num=2;num<2000;num++){ - for(int i=2;i Date: Wed, 12 Apr 2017 23:13:21 +0800 Subject: [PATCH 24/54] Create PushBoxs.c --- practices/c/level1/p10_pushBoxes/PushBoxs.c | 155 ++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 practices/c/level1/p10_pushBoxes/PushBoxs.c diff --git a/practices/c/level1/p10_pushBoxes/PushBoxs.c b/practices/c/level1/p10_pushBoxes/PushBoxs.c new file mode 100644 index 00000000..24539247 --- /dev/null +++ b/practices/c/level1/p10_pushBoxes/PushBoxs.c @@ -0,0 +1,155 @@ +# include +# include +#include +# define SIZE 8 + +int cnt; +int MAP[SIZE][SIZE] = { + { 0,0,1,1,1,0,0,0 }, + { 0,0,1,4,1,0,0,0 }, + { 0,0,1,2,1,1,1,1 }, + { 1,1,1,0,0,2,4,1 }, + { 1,4,0,2,3,1,1,1 }, + { 1,1,1,1,2,1,0,0 }, + { 0,0,0,1,4,1,0,0 }, + { 0,0,0,1,1,1,0,0 } +}; + +int init() +{ + printf("This is a small push boxes game,\nPlease enter any key to continue...\n"); + for (int i = 0; i < 30; i++) { + printf("please waiting for a second...\n"); + system("cls"); + } +} +int show_map() +{ + system("cls"); + int i, j; + for ( i = 0; i < SIZE ; i++) { + for (j = 0; j < SIZE ; j++) { + switch (MAP[i][j]) + { + case 0: + printf(" "); + break; + case 1: + printf("%c%c", 0xa8, 0x80); //代表墙壁 + break; + case 2: + printf("□"); //代表箱子 + break; + case 3: + printf("⊙"); //代表自己 + break; + case 4: + printf("☆"); //代表将要推往的地点 + break; + case 5: + printf("★"); //代表已经推到的箱子 + break; + case 6: + printf("◆"); //表示人和地点是在一个地方 + break; + } + if (j == SIZE - 1) printf("\n"); + } + } +} + +int mod_map(int *nowx,int *nowy,int *lastx,int *lasty) +{ + if (MAP[*nowy][*nowx] == 2) { + //如果下下一位是空地 + if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 0) { + MAP[*nowy][*nowx] = 3; + MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] = 2; + MAP[*lasty][*lastx] = 0; + } + //如果下下一个是目的地 + else if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 4) { + MAP[*nowy][*nowx] = 3; + MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] = 5; + MAP[*lasty][*lastx] = 0; cnt++; + } + //如果下下一个是墙 + else if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 1) { + *nowx = *lastx; *nowy = *lasty; + } + } + else if(MAP[*nowy][*nowx] == 0){ //如果什么都没有,就换位 + MAP[*nowy][*nowx] = 3; + MAP[*lasty][*lastx] = 0; + } + //如果是撞到墙了,修改nowx,nowy的值 + else if (MAP[*nowy][*nowx] == 1) { + *nowx = *lastx; + *nowy = *lasty; + } + //如果下一个位置是目的地 + else if (MAP[*nowy][*nowx] == 4) { + MAP[*nowy][*nowx] = 6; + MAP[*lasty][*lastx] = 0; + } + //如果下一个地方是已经到达目的地的箱子 + else if (MAP[*nowy][*nowx] == 5) { + //如果箱子的下一个位置是空地 + if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 0) { + MAP[*nowy][*nowx] = 6; + MAP[*lasty][*lastx] = 0; + MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] = 2; + cnt--; + } + //如果下下一个是目的地 + else if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 4) { + MAP[*nowy][*nowx] = 6; + MAP[*lasty][*lastx] = 0; + MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] = 5; + } + //如果下下一个是墙 + else if (MAP[*nowy + *nowy - *lasty][*nowx + *nowx - *lastx] == 1) { + *nowx = *lastx; + *nowy = *lasty; + } + } + + show_map(); + return; +} + +int main() +{ + init(); + show_map(); + + int nowx=4, nowy=4; + int lastx, lasty; + while (1) { + lastx = nowx, lasty = nowy; + char c = _getch(); + + switch (c) + { + case 72: + nowy -= 1; + break; + case 75: + nowx -= 1; + break; + case 80: + nowy += 1; + break; + case 77: + nowx += 1; + break; + } + mod_map(&nowx, &nowy, &lastx, &lasty); + if (cnt == 4) break; + } + printf("Congratulations!You win!"); + + system("pause"); + + return 0; +} From 494b4688e00bede1e4c430782275bcdb41a1422b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 13 Apr 2017 15:22:50 +0800 Subject: [PATCH 25/54] Create linklist.c --- practices/c/level1/p11_linkedList/linklist.c | 141 +++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 practices/c/level1/p11_linkedList/linklist.c diff --git a/practices/c/level1/p11_linkedList/linklist.c b/practices/c/level1/p11_linkedList/linklist.c new file mode 100644 index 00000000..16ef0e20 --- /dev/null +++ b/practices/c/level1/p11_linkedList/linklist.c @@ -0,0 +1,141 @@ +# include +# include + +struct LinkNode { + int data; + struct LinkNode *pNext; +}; +typedef struct LinkNode node; + +node*init(node*phead) +{ + phead = NULL; +} + +node*addback(node*phead, int newdata) +{ + node*pnew = (node*)malloc(sizeof(node)); + pnew->data = newdata; + pnew->pNext = NULL; + if (phead == NULL) { + phead = pnew; + } + else { + node*ptemp = phead; + + while (ptemp->pNext != NULL) + { + ptemp = ptemp->pNext; + } + ptemp->pNext = pnew; + } + return phead; +} + +void showall(node *phead) +{ + if (phead == NULL) { + return; + } + else { + printf("%d\t%p\t%p\n", phead->data, phead, phead->pNext); + showall(phead->pNext); + } +} + +node* revit(node*phead) +{ + if (phead == NULL || phead->pNext == NULL) { + return; + } + else { + node*pre = NULL; + node*pcur = NULL; + node*pnext = NULL; + + pre = phead; //pre指向第1个节点 + pcur = phead->pNext; //pcur指向第二个节点 + while (pcur!=NULL) + { + pnext = pcur->pNext; //备份下一个节点 + pcur->pNext = pre; //反转 + + //前进 + pre = pcur; + pcur = pnext; + //pnext = pnext->pNext; 在前面已经提到 + } + phead->pNext = NULL; + phead = pre; + } + return phead; +} +int finddata(node*phead, int finddata) +{ + int findnum=0; + node*ptemp = phead; + while (ptemp != NULL) + { + findnum++; + if (ptemp->data == finddata) { + return findnum; + } + ptemp = ptemp->pNext; + + } + return -1; +} + +int findsecdata(node*phead, int finddata) +{ + int findnum = 0; + int cnt = 0; + node*ptemp = phead; + while (ptemp != NULL) + { + findnum++; + if (ptemp->data == finddata) { + cnt++; + if(cnt==2){ + return findnum; + } + ptemp = ptemp->pNext; + continue; + } + ptemp = ptemp->pNext; + + } + return -1; +} + +int main() +{ + int number = 0; + printf("input the number of the data\n"); + scanf("%d", &number); + node*phead=NULL; + init(phead); + + int newdata = 0; + for (int i = 0; i < number; i++) { + printf("please input the %dth number:", i); + scanf("%d", &newdata); + phead = addback(phead, newdata); + } + + showall(phead); + + phead = revit(phead); + printf("反转之后输出:\n"); + + showall(phead); + printf("\nplease input the data that you want to found:"); + int findnum = 0; + scanf("%d", &findnum); + + printf("\n第一个数据所在的节点是:%d\n", finddata(phead, findnum)); + + printf("\n第二个数据所在的节点是:%d\n", findsecdata(phead, findnum)); + system("pause"); + return 0; +} From d7d972a8be90ca2dd3d1ca97e6bc60b2f927d0d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 13 Apr 2017 15:39:50 +0800 Subject: [PATCH 26/54] Create encrypt_decrypt.c --- .../p07_encrypt_decrypt/encrypt_decrypt.c | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 practices/c/level1/p07_encrypt_decrypt/encrypt_decrypt.c diff --git a/practices/c/level1/p07_encrypt_decrypt/encrypt_decrypt.c b/practices/c/level1/p07_encrypt_decrypt/encrypt_decrypt.c new file mode 100644 index 00000000..7270d1fa --- /dev/null +++ b/practices/c/level1/p07_encrypt_decrypt/encrypt_decrypt.c @@ -0,0 +1,26 @@ +#include +#include +char s[50000]; +void encrypt(); +void decrypt(); +int main() +{ + scanf("%s", s); + encrypt(); + printf("%s\n", s); + decrypt(); + printf("%s\n", s); + return 0; +} +void encrypt() +{ + int i; + for (i = 0; i < strlen(s); i++) + s[i] += 5; +} +void decrypt() +{ + int i; + for (i = 0; i < strlen(s); i++) + s[i] -= 5; +} From a6cdf75a8c58e72af52472dd6247b12428f2ed70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 27 Apr 2017 09:56:33 +0800 Subject: [PATCH 27/54] Create Queue.cpp --- practices/cpp/level1/p01_Queue/Queue.cpp | 87 ++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 practices/cpp/level1/p01_Queue/Queue.cpp diff --git a/practices/cpp/level1/p01_Queue/Queue.cpp b/practices/cpp/level1/p01_Queue/Queue.cpp new file mode 100644 index 00000000..9d87dc2f --- /dev/null +++ b/practices/cpp/level1/p01_Queue/Queue.cpp @@ -0,0 +1,87 @@ +# include +using namespace std; + +class Queue { +private: + int data[100]; + int poptrail; + int apptrail; + int *p; +public: + Queue(); + void append(int num); + void pop(); + bool IsFull(); + bool IsEmpty(); + void showall(); + ~Queue(); +}; + +Queue::Queue() +{ + memset(data, 0, 100); + poptrail = 0; + apptrail = 0; + p = data; +} +void Queue::append(int num) +{ + data[apptrail] = num; + apptrail++; +} +void Queue::pop() +{ + p++; + poptrail++; +} +bool Queue::IsFull() +{ + if (apptrail == 100) { + return true; + } + return false; +} +bool Queue:: IsEmpty() +{ + if(poptrail==100||apptrail==0){ + return true; + } +return false; +} + +void Queue::showall() +{ + int poptra = poptrail; + for (int i = poptra; i < 100;i++ ) { + cout << data[poptra] << endl; + poptra++; + } +} +Queue::~Queue() +{ + +} + + +int main() +{ + int i = 1; + Queue queue; + if (queue.IsEmpty()) { + for (i = 1; i <= 100; i++) { + queue.append(i); + } + } + if (queue.IsFull()) { + queue.showall(); + cout << endl; + } + for (i = 1; i <= 100; i++) { + queue.pop(); + if (queue.IsEmpty()) { + cout << "the queue pop successfully" << endl; + } + } + system("pause"); + return 0; +} From ba7b9ab3e20ee91a015f8097c51ffe870fc371f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 27 Apr 2017 11:13:19 +0800 Subject: [PATCH 28/54] Create SafeArry.cpp --- .../cpp/level1/p03_SafeArray/SafeArry.cpp | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 practices/cpp/level1/p03_SafeArray/SafeArry.cpp diff --git a/practices/cpp/level1/p03_SafeArray/SafeArry.cpp b/practices/cpp/level1/p03_SafeArray/SafeArry.cpp new file mode 100644 index 00000000..07faf73c --- /dev/null +++ b/practices/cpp/level1/p03_SafeArray/SafeArry.cpp @@ -0,0 +1,64 @@ +# include +# include +# include +using namespace std; + +class SafeArry { +private: + int array[300]; +public: + SafeArry(); + ~SafeArry(); + void put(int vrl); + bool get(int num); +}; + +SafeArry::SafeArry() +{ + memset(array, 0, 300); +} +void SafeArry::put(int vrl) +{ + for (int i = 0; i < 300; i++) { + array[i] = vrl; + } +} +bool SafeArry::get(int num) +{ + if (num - 1 > 299||num<1) { + cout << "ilegal visit!!" << endl; + cout << "please input again:"<> num; + while (1) { + if (safearry.get(num)) { + break; + } + else { + cin >> num; + } + } + + system("pause"); + return 0; +} From 6b5d5b18b725389fa0e6fcc37dc88c88333351de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Fri, 28 Apr 2017 12:55:37 +0800 Subject: [PATCH 29/54] Change Addback --- practices/c/level1/p11_linkedList/linklist.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/practices/c/level1/p11_linkedList/linklist.c b/practices/c/level1/p11_linkedList/linklist.c index 16ef0e20..eed62a90 100644 --- a/practices/c/level1/p11_linkedList/linklist.c +++ b/practices/c/level1/p11_linkedList/linklist.c @@ -12,7 +12,7 @@ node*init(node*phead) phead = NULL; } -node*addback(node*phead, int newdata) +node*add_back(node*phead, int newdata) { node*pnew = (node*)malloc(sizeof(node)); pnew->data = newdata; @@ -120,7 +120,7 @@ int main() for (int i = 0; i < number; i++) { printf("please input the %dth number:", i); scanf("%d", &newdata); - phead = addback(phead, newdata); + phead = add_back(phead, newdata); } showall(phead); From 2fa10342095590a02e608cca5bf724c0b47a530c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Fri, 28 Apr 2017 13:03:15 +0800 Subject: [PATCH 30/54] Updata procedure --- practices/c/level1/p03_Diophantus/Diophantus.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/practices/c/level1/p03_Diophantus/Diophantus.c b/practices/c/level1/p03_Diophantus/Diophantus.c index 3aab1050..8d792c4d 100644 --- a/practices/c/level1/p03_Diophantus/Diophantus.c +++ b/practices/c/level1/p03_Diophantus/Diophantus.c @@ -1,12 +1,13 @@ #include int main(void) -{ - int age; - // age/6+age/12+age/7+5 = age-age/2-4 - - age = 28*9/3; - printf("when diophantus's child dead,diophantus was :%d years old.",age-4); - +{ + // age/6+age/12+age/7+5 = age-age/2-4 + for(int i=10;i<=120;i++){ + if(i%6 == 0 && i%12 == 0 && i%7 == 0){ + printf("His age is %d",i); + } + } + return 0; } From 1e5c7334c4c8d49bfff4203691dfc41e8c5e6afa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Wed, 3 May 2017 14:24:46 +0800 Subject: [PATCH 31/54] Submit Circle and Point --- .../p06_CircleAndPoint/CircleAndPoint.cpp | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 practices/cpp/level1/p06_CircleAndPoint/CircleAndPoint.cpp diff --git a/practices/cpp/level1/p06_CircleAndPoint/CircleAndPoint.cpp b/practices/cpp/level1/p06_CircleAndPoint/CircleAndPoint.cpp new file mode 100644 index 00000000..93d39a70 --- /dev/null +++ b/practices/cpp/level1/p06_CircleAndPoint/CircleAndPoint.cpp @@ -0,0 +1,72 @@ +# include +using namespace std; + +class Point { +private: + int x,y; +public: + Point(int sx=0, int sy=0) + { + x = sx; + y = sy; + } + int GetX() + { + return x; + } + int GetY() + { + return y; + } + void SetPoint(int setx,int sety) + { + x = setx; + y = sety; + } +}; + +class Circle { +private: + Point now; + + int R; +public: + Circle(int r , Point nw) { + R = r; + now = nw; + } + void show() + { + cout << "x = " << now.GetX() << "\t" << "y = " << now.GetY() << endl; + cout << "R = " << R << endl; + } + Circle move(int movex,int movey) + { + int NextX, NextY; + NextX = now.GetX() + movex; + NextY = now.GetY() + movey; + Point temp; + temp.SetPoint(NextX, NextY); + Circle Temp(R, temp); + return Temp; + } + +}; +int main() +{ + Point P1(3, 5); + Point P2(0, 0); + Circle C1(3, P1); + C1.show(); + Circle C2 = C1.move(1, 2); + cout << "after " << 1 << " move :" << endl; + C2.show(); + for (int i = 0; i < 9; i++) { + C2 = C2.move(1, 2); + cout << "after " << i + 2 << " move :" << endl; + C2.show(); + } + + system("pause"); + return 0; +} From 4521c4300f6fdffe83fceedeb72cb0887003bc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Wed, 3 May 2017 21:51:33 +0800 Subject: [PATCH 32/54] submit canvas --- practices/cpp/level1/p05_Canvas/Canvas.cpp | 154 +++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 practices/cpp/level1/p05_Canvas/Canvas.cpp diff --git a/practices/cpp/level1/p05_Canvas/Canvas.cpp b/practices/cpp/level1/p05_Canvas/Canvas.cpp new file mode 100644 index 00000000..ee750927 --- /dev/null +++ b/practices/cpp/level1/p05_Canvas/Canvas.cpp @@ -0,0 +1,154 @@ +# include +using namespace std; +int Nc, Nr; + +class Point { +private: + int X, Y; +public: + Point(int x = 0, int y = 0) + { + X = x; + Y = y; + } + int GetX() + { + return X; + } + int GetY() + { + return Y; + } + void SetPoint(int x, int y) + { + X = x; + Y = y; + } +}; + +class Circle { +private: + int R; + Point Circl; +public: + Circle(int r=0, Point circl = 0) + { + R = r; + Circl = Circl; + } + void show() + { + cout << "The radius r = " << R << endl; + cout << "The circlepoint is:" << "(" << Circl.GetX() << "," << Circl.GetY() << ")" << endl; + } + void SetCircle(int r, Point c) + { + R = r; + Circl = c; + } +}; + +class Rect { +private: + Point Left; + Point Right; +public: + Rect(Point left=0, Point right= 0) + { + Left = left; + Right = right; + } + void show() + { + cout << "The left point Left = " << "(" << Left.GetX() << "," << Left.GetY() << ")" << endl; + cout << "The right point Right = " << "(" << Right.GetX() << "," << Right.GetY() << ")" << endl; + } + void SetRect(Point left, Point right) + { + Left = left; + Right = right; + } +}; + +class Canvas { +private: + Circle *pc = new Circle[Nc]; + Rect *pr = new Rect[Nr]; + int iC; + int iR; +public: + void addCir(Circle c) + { + pc[iC] = c; + iC++; + } + void addRec(Rect r) + { + pr[iR] = r; + iR++; + } + void showall() + { + cout << "The circles you have saved are below:" << endl; + for (int i = 0; i < iC; i++) { + pc[i].show(); + } + cout<< "The rectangles you have saved are below:" << endl; + for (int i = 0; i < iR; i++) { + pr[i].show(); + } + } +}; + +int main() +{ + cout << "How many circles do you want to save?" << endl; + cin >> Nc; + cout << "How many rectangles do you want to save?" << endl; + cin >> Nr; + Point P1; + Point P2; + Circle C; + Rect R; + Canvas Ca; + int r = 0, xc = 0, yc = 0; + for (int i = 0; i < Nc; i++) { + cout << "Please input the " << i + 1 << "th circle:" << endl; + cout << "r = "; + cin >> r; + cout << "Please input its circlepoint :" << endl; + cout << "x = "; + cin >> xc; + cout << "y = "; + cin >> yc; + + P1.SetPoint(xc, yc); + C.SetCircle(r, P1); + Ca.addCir(C); + } + int leftx = 0, lefty = 0; + int rightx = 0, righty = 0; + for (int i = 0; i < Nr; i++) { + cout << "Please input the " << i + 1 << "th rectangle:" << endl; + cout << "The left lower point :" << endl; + cout << "x = "; + cin >> leftx; + cout << "y = "; + cin >> lefty; + cout << "The left lower point :" << endl; + cout << "x = "; + cin >> rightx; + cout<< "y = "; + cin >> righty; + + P1.SetPoint(leftx, lefty); + P2.SetPoint(rightx, righty); + R.SetRect(P1, P2); + Ca.addRec(R); + } + cout << endl; + Ca.showall(); + system("pause"); + return 0; +} + From de09a27675c2f3ea3e77ab73b40d6a3e452e8b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 4 May 2017 12:22:05 +0800 Subject: [PATCH 33/54] Update Canvas.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前把析构函数忘了。。 --- practices/cpp/level1/p05_Canvas/Canvas.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/practices/cpp/level1/p05_Canvas/Canvas.cpp b/practices/cpp/level1/p05_Canvas/Canvas.cpp index ee750927..a4181a7f 100644 --- a/practices/cpp/level1/p05_Canvas/Canvas.cpp +++ b/practices/cpp/level1/p05_Canvas/Canvas.cpp @@ -98,6 +98,11 @@ class Canvas { pr[i].show(); } } + ~Canvas() + { + delete[] pc; + delete[] pr; + } }; int main() From a2a2752d0a7489bb48b23f3c3bda7664db5bf900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 15 May 2017 14:53:12 +0800 Subject: [PATCH 34/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 497725f5..635263bb 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -1,8 +1,8 @@ | 任务(功能) | Value | Effort | 是否已完成 -----|-------------------------------|-----------|-----------|------------| -1 | 完成SFML配置,显示“SFML works” | 0 | | | -2 | 显示一架静止的飞机于屏幕底部 | 5 | | | -3 | 背景音乐 | 1 | | | +1   | 完成SFML配置,显示“SFML works” | 0         |           |  是         | +2   | 显示一架静止的飞机于屏幕底部       | 5         |           |   是        | +3   | 背景音乐                       | 1         |           |     是      | 4 | 左右键,控制移动飞机 | 10 | | | 5 | 限制左右边界 | 1 | | | 6 | 空格键开炮,显示运动的炮弹 | 5 | | | From cb402e5c5379619e8cdddf8635edb65d1cd182b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 16 May 2017 08:40:17 +0800 Subject: [PATCH 35/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 635263bb..85505fbf 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -3,7 +3,7 @@ 1   | 完成SFML配置,显示“SFML works” | 0         |           |  是         | 2   | 显示一架静止的飞机于屏幕底部       | 5         |           |   是        | 3   | 背景音乐                       | 1         |           |     是      | -4 | 左右键,控制移动飞机 | 10 | | | +4   | 左右键,控制移动飞机             | 10       |           |  是         | 5 | 限制左右边界 | 1 | | | 6 | 空格键开炮,显示运动的炮弹 | 5 | | | 7 | 炮弹飞出边界处理 | 2 | | | From 29a043eb6b34d96eb2a75fd3a28a4ee673d5c7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 16 May 2017 09:48:18 +0800 Subject: [PATCH 36/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 85505fbf..5a4506f2 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -4,7 +4,7 @@ 2   | 显示一架静止的飞机于屏幕底部       | 5         |           |   是        | 3   | 背景音乐                       | 1         |           |     是      | 4   | 左右键,控制移动飞机             | 10       |           |  是         | -5 | 限制左右边界 | 1 | | | +5   | 限制左右边界                   | 1         |           |   是        | 6 | 空格键开炮,显示运动的炮弹 | 5 | | | 7 | 炮弹飞出边界处理 | 2 | | | 8 | 随机产生敌机,并向下运动 | 10 | | | From ca447d6b5b9e08f6df7790eadf782639f5049909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Wed, 17 May 2017 23:35:20 +0800 Subject: [PATCH 37/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 5a4506f2..79418bb8 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -5,8 +5,8 @@ 3   | 背景音乐                       | 1         |           |     是      | 4   | 左右键,控制移动飞机             | 10       |           |  是         | 5   | 限制左右边界                   | 1         |           |   是        | -6 | 空格键开炮,显示运动的炮弹 | 5 | | | -7 | 炮弹飞出边界处理 | 2 | | | +6 | 空格键开炮,显示运动的炮弹 | 5 | | 是 | +7 | 炮弹飞出边界处理 | 2 | | 是 | 8 | 随机产生敌机,并向下运动 | 10 | | | 9 | 敌机飞出边界处理 | 2 | | | 10 | 碰撞处理(敌机与炮弹碰撞) | 10 | | | From 3d551a12995e9c59710bbb1a5d292d6310bec504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 18 May 2017 14:41:43 +0800 Subject: [PATCH 38/54] Create flight.cpp --- practices/cpp/level1/p11_Fighters/flight.cpp | 175 +++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 practices/cpp/level1/p11_Fighters/flight.cpp diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp new file mode 100644 index 00000000..dd66eacf --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -0,0 +1,175 @@ +#include +#include +# include +#define BulMoveSpeed 0.7 +#define PlaMoveSpeed 0.6 +# include +//子弹的类 +class EnemyAircraft{ +public : + sf::Texture ene_aircraft_texture; + sf::Sprite ene_aircraft; + EnemyAircraft() + { + if (!ene_aircraft_texture.loadFromFile("diji9.jfif")) + { + + } + ene_aircraft.setTexture(ene_aircraft_texture); + ene_aircraft.setScale(1.0f,1.0f); + } + ~EnemyAircraft() + { + + } +}; +//敌机的类 +class Bullet{ +public: + sf::Texture bullet_texture; + sf::Sprite bullet; + + Bullet() + { + if (!bullet_texture.loadFromFile("paodan8.jpg")) + { + + } + bullet.setTexture(bullet_texture); + bullet.setScale(0.2f,0.2f); + } + ~Bullet() + { + + } + +}; + +int MoveSprite(sf::Sprite &myplane) +{ + sf::Vector2f position = myplane.getPosition(); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)&&position.x>0) + { + // left key is pressed: move our character + myplane.move(-PlaMoveSpeed,0); + } + else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)&&position.x<1272.2) + { + // left key is pressed: move our character + myplane.move(PlaMoveSpeed,0); + } + else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) + { + myplane.move(0,-PlaMoveSpeed); + } + else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)&&position.y<720) + { + myplane.move(0,PlaMoveSpeed); + } + return 0; +} + +int main() +{ + srand(time(0)); + int num_ene_aircraft = (rand()%18)+1; + int pst_ene_aircraft = rand()%1326; + + //设置飞机位置,大小,窗口 + sf::RenderWindow window(sf::VideoMode(1400,900),"The plane!"); + sf::Texture myplane_texture; + if (!myplane_texture.loadFromFile("flightimage3.jpg")) + { + return -1; + } + sf::Sprite myplane; + myplane.setTexture(myplane_texture); + myplane.setPosition(600,600); + myplane.setScale(0.6f,0.6f); + + + //设置背景音乐 + sf::Music background_music; + if (!background_music.openFromFile("OpeningTitles.ogg")) + { + return -1; // error + } + background_music.play(); + background_music.setLoop(true); + + + + + //设置输出窗口 + while (window.isOpen()) + { + + sf::Event event; + while (window.pollEvent(event)) + { + if (event.type == sf::Event::Closed) + window.close(); + } + + //移动飞机 + MoveSprite(myplane); + window.clear(sf::Color::White); + window.draw(myplane); + + //声明子弹,并且设置子弹的位置,显示子弹 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Home)) + { + + // 产 生三个子弹 + Bullet *p = new Bullet[3]; + sf::Vector2f position = myplane.getPosition(); + p[1].bullet.setPosition(position.x+41.4,position.y-45); + p[0].bullet.setPosition(position.x-5,position.y-30); + p[2].bullet.setPosition(position.x+87.8,position.y-30); + + sf::Vector2f position_bu = p[1].bullet.getPosition(); + while(position_bu.y>0) + { + + p[1].bullet.move(0,-BulMoveSpeed); + p[0].bullet.move(0,-BulMoveSpeed); + p[2].bullet.move(0,-BulMoveSpeed); + position_bu = p[1].bullet.getPosition(); + + window.draw(p[1].bullet); + window.draw(p[0].bullet); + window.draw(p[2].bullet); + window.display(); + + window.clear(sf::Color::White); + window.draw(myplane); + + } + + delete[] p; + } + + + //声明敌机 + EnemyAircraft enemy_aircra; + enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); + + sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); + while(position_ene_air.y<900){ + + enemy_aircra.ene_aircraft.move(0,-BulMoveSpeed); + window.draw(enemy_aircra.ene_aircraft); + window.display(); + + window.clear(sf::Color::White); + window.draw(myplane); + } + + window.draw(enemy_aircra.ene_aircraft); + window.display(); + + } + + return 0; +} + From b875fd9b9c89c02832d57ab34cc6a9e1b53d1cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 18 May 2017 15:33:39 +0800 Subject: [PATCH 39/54] Update flight.cpp --- practices/cpp/level1/p11_Fighters/flight.cpp | 141 +++++++++---------- 1 file changed, 70 insertions(+), 71 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp index dd66eacf..e10e396a 100644 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -2,8 +2,10 @@ #include # include #define BulMoveSpeed 0.7 -#define PlaMoveSpeed 0.6 +#define EneAiecraftSpeed 0.2 +#define PlaMoveSpeed 0.3 # include + //子弹的类 class EnemyAircraft{ public : @@ -23,6 +25,7 @@ public : } }; + //敌机的类 class Bullet{ public: @@ -71,9 +74,6 @@ int MoveSprite(sf::Sprite &myplane) int main() { - srand(time(0)); - int num_ene_aircraft = (rand()%18)+1; - int pst_ene_aircraft = rand()%1326; //设置飞机位置,大小,窗口 sf::RenderWindow window(sf::VideoMode(1400,900),"The plane!"); @@ -98,77 +98,76 @@ int main() background_music.setLoop(true); - - - //设置输出窗口 - while (window.isOpen()) - { - - sf::Event event; - while (window.pollEvent(event)) - { - if (event.type == sf::Event::Closed) - window.close(); - } - - //移动飞机 - MoveSprite(myplane); - window.clear(sf::Color::White); - window.draw(myplane); - - //声明子弹,并且设置子弹的位置,显示子弹 - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Home)) - { - - // 产 生三个子弹 - Bullet *p = new Bullet[3]; - sf::Vector2f position = myplane.getPosition(); - p[1].bullet.setPosition(position.x+41.4,position.y-45); - p[0].bullet.setPosition(position.x-5,position.y-30); - p[2].bullet.setPosition(position.x+87.8,position.y-30); - - sf::Vector2f position_bu = p[1].bullet.getPosition(); - while(position_bu.y>0) + //设置输出窗口 + while (window.isOpen()) + { + srand(time(0)); + int num_ene_aircraft = (rand()%18)+1; + int pst_ene_aircraft = rand()%1326; + + sf::Event event; + while (window.pollEvent(event)) + { + if (event.type == sf::Event::Closed) + window.close(); + } + + + //声明敌机 + EnemyAircraft enemy_aircra; + enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); + sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); + + while(position_ene_air.y<900) + { + enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeed); + position_ene_air = enemy_aircra.ene_aircraft.getPosition(); + window.draw(enemy_aircra.ene_aircraft); + window.display(); + + //声明子弹,并且设置子弹的位置,显示子弹 + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Home)) { - p[1].bullet.move(0,-BulMoveSpeed); - p[0].bullet.move(0,-BulMoveSpeed); - p[2].bullet.move(0,-BulMoveSpeed); - position_bu = p[1].bullet.getPosition(); - - window.draw(p[1].bullet); - window.draw(p[0].bullet); - window.draw(p[2].bullet); - window.display(); - - window.clear(sf::Color::White); - window.draw(myplane); - - } - - delete[] p; - } - - - //声明敌机 - EnemyAircraft enemy_aircra; - enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); - - sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); - while(position_ene_air.y<900){ - - enemy_aircra.ene_aircraft.move(0,-BulMoveSpeed); - window.draw(enemy_aircra.ene_aircraft); - window.display(); - - window.clear(sf::Color::White); - window.draw(myplane); - } + // 产 生三个子弹 + Bullet *p = new Bullet[3]; + sf::Vector2f position = myplane.getPosition(); + p[1].bullet.setPosition(position.x+41.4,position.y-45); + p[0].bullet.setPosition(position.x-5,position.y-30); + p[2].bullet.setPosition(position.x+87.8,position.y-30); + + sf::Vector2f position_bu = p[1].bullet.getPosition(); + while(position_bu.y>0) + { + + p[1].bullet.move(0,-BulMoveSpeed); + p[0].bullet.move(0,-BulMoveSpeed); + p[2].bullet.move(0,-BulMoveSpeed); + enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeed); + MoveSprite(myplane); + position_bu = p[1].bullet.getPosition(); + + window.draw(p[1].bullet); + window.draw(p[0].bullet); + window.draw(p[2].bullet); + window.draw(enemy_aircra.ene_aircraft); + window.display(); + + window.clear(sf::Color::White); + window.draw(myplane); + + } + + delete[] p; + } + + window.clear(sf::Color::White); + window.draw(myplane); + MoveSprite(myplane); + } - window.draw(enemy_aircra.ene_aircraft); - window.display(); - } + } return 0; } From a2de5113a34d06bb4fe9408f4e2471782776159b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Thu, 18 May 2017 23:31:44 +0800 Subject: [PATCH 40/54] Update flight.cpp --- practices/cpp/level1/p11_Fighters/flight.cpp | 38 +++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp index e10e396a..45d9a900 100644 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -2,8 +2,11 @@ #include # include #define BulMoveSpeed 0.7 -#define EneAiecraftSpeed 0.2 -#define PlaMoveSpeed 0.3 +#define EneAiecraftSpeedD 0.4 +#define EneAiecraftSpeedLR 4 +# define EneAiecraftSpeedlr 0.08 +#define EneAiecraftSpeedd 0.1 +#define PlaMoveSpeed 0.5 # include //子弹的类 @@ -118,9 +121,23 @@ int main() enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); - while(position_ene_air.y<900) + while(position_ene_air.y<900&&position_ene_air.x>0&&position_ene_air.x<1325) { - enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeed); + + int ene_move_dir = (rand()%3)-1; + + switch (ene_move_dir) + { + case -1 : + enemy_aircra.ene_aircraft.move(-EneAiecraftSpeedLR,0); + break; + case 0 : + enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeedD); + break; + case 1: + enemy_aircra.ene_aircraft.move(EneAiecraftSpeedLR,0); + break; + } position_ene_air = enemy_aircra.ene_aircraft.getPosition(); window.draw(enemy_aircra.ene_aircraft); window.display(); @@ -143,7 +160,18 @@ int main() p[1].bullet.move(0,-BulMoveSpeed); p[0].bullet.move(0,-BulMoveSpeed); p[2].bullet.move(0,-BulMoveSpeed); - enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeed); + switch (ene_move_dir) + { + case -1 : + enemy_aircra.ene_aircraft.move(-EneAiecraftSpeedlr,0); + break; + case 0 : + enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeedd); + break; + case 1: + enemy_aircra.ene_aircraft.move(EneAiecraftSpeedlr,0); + break; + } MoveSprite(myplane); position_bu = p[1].bullet.getPosition(); From b7193bca9cf66f06dd83f14cbffb017ff56522f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Sat, 20 May 2017 13:33:10 +0800 Subject: [PATCH 41/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 79418bb8..4fada7d4 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -7,8 +7,8 @@ 5   | 限制左右边界                   | 1         |           |   是        | 6 | 空格键开炮,显示运动的炮弹 | 5 | | 是 | 7 | 炮弹飞出边界处理 | 2 | | 是 | -8 | 随机产生敌机,并向下运动 | 10 | | | -9 | 敌机飞出边界处理 | 2 | | | +8   | 随机产生敌机,并向下运动         | 10       |           |   是        | +9   | 敌机飞出边界处理               | 2         |           |      是     | 10 | 碰撞处理(敌机与炮弹碰撞) | 10 | | | 11 | 显示敌机爆炸过程 | 10 | | | 12 | 爆炸声音 | 2 | | | From 0662574e5ec0f8080eed0c99e7acacb0bf8f8f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 23 May 2017 09:42:00 +0800 Subject: [PATCH 42/54] add one feature --- practices/cpp/level1/p11_Fighters/TodoList.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 4fada7d4..311a92ec 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -8,8 +8,9 @@ 6 | 空格键开炮,显示运动的炮弹 | 5 | | 是 | 7 | 炮弹飞出边界处理 | 2 | | 是 | 8   | 随机产生敌机,并向下运动         | 10       |           |   是        | +      |让敌机随意向下移动,方向不定         |5        |           |  是         | 9   | 敌机飞出边界处理               | 2         |           |      是     | -10 | 碰撞处理(敌机与炮弹碰撞) | 10 | | | +10   | 碰撞处理(敌机与炮弹碰撞)       | 10         |           |     是      | 11 | 显示敌机爆炸过程 | 10 | | | 12 | 爆炸声音 | 2 | | | 13 | 计分及显示 | 5 | | | From 0d37747e57c827bfca9415f5944fe20a469ea4c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 23 May 2017 09:47:05 +0800 Subject: [PATCH 43/54] achieve bullet and enemy_flight collide --- practices/cpp/level1/p11_Fighters/flight.cpp | 43 +++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp index 45d9a900..669585d6 100644 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -1,7 +1,7 @@ #include #include # include -#define BulMoveSpeed 0.7 +#define BulMoveSpeed 0.8 #define EneAiecraftSpeedD 0.4 #define EneAiecraftSpeedLR 4 # define EneAiecraftSpeedlr 0.08 @@ -21,7 +21,7 @@ public : } ene_aircraft.setTexture(ene_aircraft_texture); - ene_aircraft.setScale(1.0f,1.0f); + //ene_aircraft.setScale(1.0f,1.0f); } ~EnemyAircraft() { @@ -121,6 +121,9 @@ int main() enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); + //判断是否碰撞 + int if_collision = 0; + while(position_ene_air.y<900&&position_ene_air.x>0&&position_ene_air.x<1325) { @@ -148,10 +151,10 @@ int main() // 产 生三个子弹 Bullet *p = new Bullet[3]; - sf::Vector2f position = myplane.getPosition(); - p[1].bullet.setPosition(position.x+41.4,position.y-45); - p[0].bullet.setPosition(position.x-5,position.y-30); - p[2].bullet.setPosition(position.x+87.8,position.y-30); + sf::Vector2f position_plane = myplane.getPosition(); + p[1].bullet.setPosition(position_plane.x+41.4,position_plane.y-45); + p[0].bullet.setPosition(position_plane.x-5,position_plane.y-30); + p[2].bullet.setPosition(position_plane.x+87.8,position_plane.y-30); sf::Vector2f position_bu = p[1].bullet.getPosition(); while(position_bu.y>0) @@ -173,7 +176,20 @@ int main() break; } MoveSprite(myplane); + window.draw(myplane); + position_ene_air = enemy_aircra.ene_aircraft.getPosition(); position_bu = p[1].bullet.getPosition(); + if((position_bu.y-position_ene_air.y)<60&&-60<(position_bu.y-position_ene_air.y)) + { + if((position_ene_air.x<=(position_bu.x+60))&&(position_ene_air.x+75>=(position_bu.x-60))) + { + window.display(); + if_collision=1; + std::cout< Date: Tue, 23 May 2017 13:27:19 +0800 Subject: [PATCH 44/54] Update TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 311a92ec..116da02d 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -11,8 +11,8 @@      |让敌机随意向下移动,方向不定         |5        |           |  是         | 9   | 敌机飞出边界处理               | 2         |           |      是     | 10   | 碰撞处理(敌机与炮弹碰撞)       | 10         |           |     是      | -11 | 显示敌机爆炸过程 | 10 | | | -12 | 爆炸声音 | 2 | | | +11   | 显示敌机爆炸过程               | 10         |           |    是       | +12   | 爆炸声音                       | 2         |           |     是      | 13 | 计分及显示 | 5 | | | 14 | 敌机炮弹处理 | 10 | | | 15 | 被敌机击中处理(炸毁、3条命) | 10 | | | From c5d198786152e175abbd6b2806b9b383c341c47b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 23 May 2017 13:28:34 +0800 Subject: [PATCH 45/54] add explotion animation and music --- practices/cpp/level1/p11_Fighters/flight.cpp | 67 ++++++++++++++++---- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp index 669585d6..95f9fd28 100644 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -21,7 +21,7 @@ public : } ene_aircraft.setTexture(ene_aircraft_texture); - //ene_aircraft.setScale(1.0f,1.0f); + ene_aircraft.setScale(1.0f,1.0f); } ~EnemyAircraft() { @@ -51,6 +51,28 @@ class Bullet{ }; +//爆炸的类 +class Explosion{ +public: + sf::Texture explosion_texture; + sf::Sprite explosion; + + Explosion() + { + if (!explosion_texture.loadFromFile("baozha1.jfif")) + { + + } + explosion.setTexture(explosion_texture); + explosion.setScale(0.5f,0.5f); + } + + ~Explosion() + { + + } +}; + int MoveSprite(sf::Sprite &myplane) { sf::Vector2f position = myplane.getPosition(); @@ -92,14 +114,15 @@ int main() //设置背景音乐 - sf::Music background_music; - if (!background_music.openFromFile("OpeningTitles.ogg")) - { - return -1; // error - } - background_music.play(); - background_music.setLoop(true); - +// sf::Music background_music; +// if (!background_music.openFromFile("OpeningTitles.ogg")) +// { +// return -1; // error +// } +// background_music.play(); +// background_music.setLoop(true); + //爆炸音效 + sf::Music explosion_music; //设置输出窗口 while (window.isOpen()) @@ -179,13 +202,32 @@ int main() window.draw(myplane); position_ene_air = enemy_aircra.ene_aircraft.getPosition(); position_bu = p[1].bullet.getPosition(); - if((position_bu.y-position_ene_air.y)<60&&-60<(position_bu.y-position_ene_air.y)) + if( (position_bu.y-position_ene_air.y)<60&&-60<(position_bu.y-position_ene_air.y) ) { if((position_ene_air.x<=(position_bu.x+60))&&(position_ene_air.x+75>=(position_bu.x-60))) { + Explosion * p_exp_ene = new Explosion; + p_exp_ene->explosion.setPosition(position_ene_air.x, position_ene_air.y) ; + window.draw(p_exp_ene->explosion); window.display(); - if_collision=1; + + + sf::Music ii; + if (!ii.openFromFile("baozhasheng1.wav")) + { + return -1; // error + } + ii.play(); + if (!explosion_music.openFromFile("baozhasheng1.wav")) + { + return -1; // error + } + explosion_music.play(); + + + if_collision++; std::cout< Date: Tue, 23 May 2017 13:30:04 +0800 Subject: [PATCH 46/54] Update flight.cpp --- practices/cpp/level1/p11_Fighters/flight.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp index 95f9fd28..a9158854 100644 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ b/practices/cpp/level1/p11_Fighters/flight.cpp @@ -114,13 +114,13 @@ int main() //设置背景音乐 -// sf::Music background_music; -// if (!background_music.openFromFile("OpeningTitles.ogg")) -// { -// return -1; // error -// } -// background_music.play(); -// background_music.setLoop(true); + sf::Music background_music; + if (!background_music.openFromFile("OpeningTitles.ogg")) + { + return -1; // error + } + background_music.play(); + background_music.setLoop(true); //爆炸音效 sf::Music explosion_music; From 3e6d9bd1e96da960d160811cfd7bdadbe3b00d97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 5 Jun 2017 11:40:03 +0800 Subject: [PATCH 47/54] Update README.md --- practices/cpp/level1/p11_Fighters/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/practices/cpp/level1/p11_Fighters/README.md b/practices/cpp/level1/p11_Fighters/README.md index 58761a68..d7c53372 100755 --- a/practices/cpp/level1/p11_Fighters/README.md +++ b/practices/cpp/level1/p11_Fighters/README.md @@ -2,4 +2,6 @@ ### 功能要求: -随心所欲!!! \ No newline at end of file +随心所欲!!! + +代码详见VScode库 From 587a0f53dffcbe0de9c43242d55221c975900cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 5 Jun 2017 11:40:35 +0800 Subject: [PATCH 48/54] Update README.md --- practices/cpp/level1/p11_Fighters/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/practices/cpp/level1/p11_Fighters/README.md b/practices/cpp/level1/p11_Fighters/README.md index d7c53372..2c92d72f 100755 --- a/practices/cpp/level1/p11_Fighters/README.md +++ b/practices/cpp/level1/p11_Fighters/README.md @@ -5,3 +5,4 @@ 随心所欲!!! 代码详见VScode库 +https://github.com/Flsahkong/Vscode From 4baf6a06934e50d7159c1a4ed41ea8f423648f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 12 Jun 2017 03:44:09 -0500 Subject: [PATCH 49/54] Create ReadmeFirst --- practices/cpp/level1/p11_Fighters/ReadmeFirst | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 practices/cpp/level1/p11_Fighters/ReadmeFirst diff --git a/practices/cpp/level1/p11_Fighters/ReadmeFirst b/practices/cpp/level1/p11_Fighters/ReadmeFirst new file mode 100644 index 00000000..e6075ae0 --- /dev/null +++ b/practices/cpp/level1/p11_Fighters/ReadmeFirst @@ -0,0 +1,4 @@ +所有的代码已经转移 + +详见VScode库 +https://github.com/Flsahkong/Vscode From be41a2e6e5a6bf51d18c9813d115c26db64b3b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 12 Jun 2017 03:44:32 -0500 Subject: [PATCH 50/54] Create ReadmeFirst.md --- practices/cpp/level1/p11_Fighters/{ReadmeFirst => ReadmeFirst.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/cpp/level1/p11_Fighters/{ReadmeFirst => ReadmeFirst.md} (100%) diff --git a/practices/cpp/level1/p11_Fighters/ReadmeFirst b/practices/cpp/level1/p11_Fighters/ReadmeFirst.md similarity index 100% rename from practices/cpp/level1/p11_Fighters/ReadmeFirst rename to practices/cpp/level1/p11_Fighters/ReadmeFirst.md From b501c1b315aa87c4eb094167c4828d37b222d2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Mon, 12 Jun 2017 03:45:05 -0500 Subject: [PATCH 51/54] Delete flight.cpp --- practices/cpp/level1/p11_Fighters/flight.cpp | 266 ------------------- 1 file changed, 266 deletions(-) delete mode 100644 practices/cpp/level1/p11_Fighters/flight.cpp diff --git a/practices/cpp/level1/p11_Fighters/flight.cpp b/practices/cpp/level1/p11_Fighters/flight.cpp deleted file mode 100644 index a9158854..00000000 --- a/practices/cpp/level1/p11_Fighters/flight.cpp +++ /dev/null @@ -1,266 +0,0 @@ -#include -#include -# include -#define BulMoveSpeed 0.8 -#define EneAiecraftSpeedD 0.4 -#define EneAiecraftSpeedLR 4 -# define EneAiecraftSpeedlr 0.08 -#define EneAiecraftSpeedd 0.1 -#define PlaMoveSpeed 0.5 -# include - -//子弹的类 -class EnemyAircraft{ -public : - sf::Texture ene_aircraft_texture; - sf::Sprite ene_aircraft; - EnemyAircraft() - { - if (!ene_aircraft_texture.loadFromFile("diji9.jfif")) - { - - } - ene_aircraft.setTexture(ene_aircraft_texture); - ene_aircraft.setScale(1.0f,1.0f); - } - ~EnemyAircraft() - { - - } -}; - -//敌机的类 -class Bullet{ -public: - sf::Texture bullet_texture; - sf::Sprite bullet; - - Bullet() - { - if (!bullet_texture.loadFromFile("paodan8.jpg")) - { - - } - bullet.setTexture(bullet_texture); - bullet.setScale(0.2f,0.2f); - } - ~Bullet() - { - - } - -}; - -//爆炸的类 -class Explosion{ -public: - sf::Texture explosion_texture; - sf::Sprite explosion; - - Explosion() - { - if (!explosion_texture.loadFromFile("baozha1.jfif")) - { - - } - explosion.setTexture(explosion_texture); - explosion.setScale(0.5f,0.5f); - } - - ~Explosion() - { - - } -}; - -int MoveSprite(sf::Sprite &myplane) -{ - sf::Vector2f position = myplane.getPosition(); - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)&&position.x>0) - { - // left key is pressed: move our character - myplane.move(-PlaMoveSpeed,0); - } - else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)&&position.x<1272.2) - { - // left key is pressed: move our character - myplane.move(PlaMoveSpeed,0); - } - else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) - { - myplane.move(0,-PlaMoveSpeed); - } - else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)&&position.y<720) - { - myplane.move(0,PlaMoveSpeed); - } - return 0; -} - -int main() -{ - - //设置飞机位置,大小,窗口 - sf::RenderWindow window(sf::VideoMode(1400,900),"The plane!"); - sf::Texture myplane_texture; - if (!myplane_texture.loadFromFile("flightimage3.jpg")) - { - return -1; - } - sf::Sprite myplane; - myplane.setTexture(myplane_texture); - myplane.setPosition(600,600); - myplane.setScale(0.6f,0.6f); - - - //设置背景音乐 - sf::Music background_music; - if (!background_music.openFromFile("OpeningTitles.ogg")) - { - return -1; // error - } - background_music.play(); - background_music.setLoop(true); - //爆炸音效 - sf::Music explosion_music; - - //设置输出窗口 - while (window.isOpen()) - { - srand(time(0)); - int num_ene_aircraft = (rand()%18)+1; - int pst_ene_aircraft = rand()%1326; - - sf::Event event; - while (window.pollEvent(event)) - { - if (event.type == sf::Event::Closed) - window.close(); - } - - - //声明敌机 - EnemyAircraft enemy_aircra; - enemy_aircra.ene_aircraft.setPosition(pst_ene_aircraft,0); - sf::Vector2f position_ene_air = enemy_aircra.ene_aircraft.getPosition(); - - //判断是否碰撞 - int if_collision = 0; - - while(position_ene_air.y<900&&position_ene_air.x>0&&position_ene_air.x<1325) - { - - int ene_move_dir = (rand()%3)-1; - - switch (ene_move_dir) - { - case -1 : - enemy_aircra.ene_aircraft.move(-EneAiecraftSpeedLR,0); - break; - case 0 : - enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeedD); - break; - case 1: - enemy_aircra.ene_aircraft.move(EneAiecraftSpeedLR,0); - break; - } - position_ene_air = enemy_aircra.ene_aircraft.getPosition(); - window.draw(enemy_aircra.ene_aircraft); - window.display(); - - //声明子弹,并且设置子弹的位置,显示子弹 - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Home)) - { - - // 产 生三个子弹 - Bullet *p = new Bullet[3]; - sf::Vector2f position_plane = myplane.getPosition(); - p[1].bullet.setPosition(position_plane.x+41.4,position_plane.y-45); - p[0].bullet.setPosition(position_plane.x-5,position_plane.y-30); - p[2].bullet.setPosition(position_plane.x+87.8,position_plane.y-30); - - sf::Vector2f position_bu = p[1].bullet.getPosition(); - while(position_bu.y>0) - { - - p[1].bullet.move(0,-BulMoveSpeed); - p[0].bullet.move(0,-BulMoveSpeed); - p[2].bullet.move(0,-BulMoveSpeed); - switch (ene_move_dir) - { - case -1 : - enemy_aircra.ene_aircraft.move(-EneAiecraftSpeedlr,0); - break; - case 0 : - enemy_aircra.ene_aircraft.move(0,EneAiecraftSpeedd); - break; - case 1: - enemy_aircra.ene_aircraft.move(EneAiecraftSpeedlr,0); - break; - } - MoveSprite(myplane); - window.draw(myplane); - position_ene_air = enemy_aircra.ene_aircraft.getPosition(); - position_bu = p[1].bullet.getPosition(); - if( (position_bu.y-position_ene_air.y)<60&&-60<(position_bu.y-position_ene_air.y) ) - { - if((position_ene_air.x<=(position_bu.x+60))&&(position_ene_air.x+75>=(position_bu.x-60))) - { - Explosion * p_exp_ene = new Explosion; - p_exp_ene->explosion.setPosition(position_ene_air.x, position_ene_air.y) ; - window.draw(p_exp_ene->explosion); - window.display(); - - - sf::Music ii; - if (!ii.openFromFile("baozhasheng1.wav")) - { - return -1; // error - } - ii.play(); - if (!explosion_music.openFromFile("baozhasheng1.wav")) - { - return -1; // error - } - explosion_music.play(); - - - if_collision++; - std::cout< Date: Mon, 12 Jun 2017 03:45:45 -0500 Subject: [PATCH 52/54] Create TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index 116da02d..fa649df4 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -7,8 +7,7 @@ 5   | 限制左右边界                   | 1         |           |   是        | 6 | 空格键开炮,显示运动的炮弹 | 5 | | 是 | 7 | 炮弹飞出边界处理 | 2 | | 是 | -8   | 随机产生敌机,并向下运动         | 10       |           |   是        | -      |让敌机随意向下移动,方向不定         |5        |           |  是         | +8   | 随机产生敌机,并向下运动         | 10       |           |   是              | 9   | 敌机飞出边界处理               | 2         |           |      是     | 10   | 碰撞处理(敌机与炮弹碰撞)       | 10         |           |     是      | 11   | 显示敌机爆炸过程               | 10         |           |    是       | From 79094cba2e4cfe8e9aa2f8738e1cea4eb6422cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 13 Jun 2017 09:09:08 +0800 Subject: [PATCH 53/54] Create TodoList.md --- practices/cpp/level1/p11_Fighters/TodoList.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/practices/cpp/level1/p11_Fighters/TodoList.md b/practices/cpp/level1/p11_Fighters/TodoList.md index fa649df4..82e3f1e9 100755 --- a/practices/cpp/level1/p11_Fighters/TodoList.md +++ b/practices/cpp/level1/p11_Fighters/TodoList.md @@ -12,14 +12,21 @@ 10   | 碰撞处理(敌机与炮弹碰撞)       | 10         |           |     是      | 11   | 显示敌机爆炸过程               | 10         |           |    是       | 12   | 爆炸声音                       | 2         |           |     是      | -13 | 计分及显示 | 5 | | | -14 | 敌机炮弹处理 | 10 | | | -15 | 被敌机击中处理(炸毁、3条命) | 10 | | | -16 | 过关控制(过关需要计分、游戏速度控制)| 20 | | | +13   | 计分及显示                     | 5         |           |     是      | +14   | 敌机炮弹处理                   | 10         |           |     是      | +15   | 被敌机击中处理(炸毁、3条命)     | 10         |           |    是       | +16   | 过关控制(过关需要计分、游戏速度控制)| 20       |           |    是       | 17 | | | | | 18 | | | | | 19 | | | | | -20 | | | | | -合计 | | | | | +20   |上下左右键控制飞机移动            |  5         |           |   是      | +21   |两种Boss,Boss耐子弹的能力不同    | 20        |           |   是       | +22    |Boss的子弹随机往各个方向移动       |15          |           |  是      | +23   | 给飞机设置三种技能                | 20        |            |  是        | +24   | 点击F11关闭所有声音               | 5         |             |  是      | +25   | 游戏开始动画,游戏玩法说明         |   10      |            |  是      | +26    |游戏结束后,可以选择退出或者重新开始| 15        |           |  是      | + +合计   |                                 |  193      |           |    是       | From 6f0415450bd923dae17dd573100a6a79cd18da50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=B8=85=E9=94=8B?= Date: Tue, 13 Jun 2017 09:09:52 +0800 Subject: [PATCH 54/54] Create READMEFIRST.md --- .../cpp/level1/p11_Fighters/{ReadmeFirst.md => READMEFIRST.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename practices/cpp/level1/p11_Fighters/{ReadmeFirst.md => READMEFIRST.md} (100%) diff --git a/practices/cpp/level1/p11_Fighters/ReadmeFirst.md b/practices/cpp/level1/p11_Fighters/READMEFIRST.md similarity index 100% rename from practices/cpp/level1/p11_Fighters/ReadmeFirst.md rename to practices/cpp/level1/p11_Fighters/READMEFIRST.md