From bec1370fe361ce7501ccafe06e847ee13f4b488f Mon Sep 17 00:00:00 2001 From: =stan66667 <=1084096585@qq.com> Date: Sat, 2 Mar 2019 13:06:43 +0800 Subject: [PATCH 01/35] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86running=20lett?= =?UTF-8?q?er?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- level1/p01_runningLetter/L1T1.cpp | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 level1/p01_runningLetter/L1T1.cpp diff --git a/level1/p01_runningLetter/L1T1.cpp b/level1/p01_runningLetter/L1T1.cpp new file mode 100644 index 00000000..80f96403 --- /dev/null +++ b/level1/p01_runningLetter/L1T1.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#define Length 20 + +int main () +{ + int a=0; + int b=1; + while(1) + { + a+=b; + system("cls"); + int i=0; + while(i Date: Wed, 20 Mar 2019 20:04:58 +0800 Subject: [PATCH 02/35] Level 1 Exercise 2 --- level1/p02_isPrime/L1T2.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 level1/p02_isPrime/L1T2.cpp diff --git a/level1/p02_isPrime/L1T2.cpp b/level1/p02_isPrime/L1T2.cpp new file mode 100644 index 00000000..edd2b95b --- /dev/null +++ b/level1/p02_isPrime/L1T2.cpp @@ -0,0 +1,26 @@ +#include + int main() +{ + unsigned int a; + printf("请您输入一个正整数:"); + scanf("%u",&a); + int i,b=0; + for(i=1;i<=a;i++) + { + if(a%i==0) + { + b++; + } + } + if(b==2||b==1) + { + printf("%u是素数。\n",a); + } + else + { + printf("%u不是素数。\n",a); + } + + return 0; +} + From 2ac63b7b6976b81a51ab2c8bfec6ee3b6c9ad438 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 20 Mar 2019 20:08:24 +0800 Subject: [PATCH 03/35] Level 1Exercise 3 --- level1/p03_Diophantus/L1T3.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 level1/p03_Diophantus/L1T3.cpp diff --git a/level1/p03_Diophantus/L1T3.cpp b/level1/p03_Diophantus/L1T3.cpp new file mode 100644 index 00000000..b4891344 --- /dev/null +++ b/level1/p03_Diophantus/L1T3.cpp @@ -0,0 +1,31 @@ +### 编程解决下面的问题: + +取自《希腊诗选》(Greek Anthology): + +丢番图的童年经过了他一生的六分之一, + +青年经过了十二分之一, + +又有七分之一的时间是单身汉。 + +结婚五年后得了个儿子, + +儿子比父亲先死四年, + +年级是他的一半。 + +问儿子死时丢番图多大? +#include +int main() +{ + int age; + for(age=1;;age++) + { + if(age*1.0/6+age*1.0/12+age*1.0/7+5+4==age*1.0/2) + { + age-=4; + printf("丢番图儿子死时丢番图%d岁。",age); + break; + } + } +} From bf75807d62f94e9ae467702c185d775604b000c5 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 20 Mar 2019 20:09:45 +0800 Subject: [PATCH 04/35] Level 1 Exercise 4 --- level1/p04_ narcissus/L1T4.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 level1/p04_ narcissus/L1T4.cpp diff --git a/level1/p04_ narcissus/L1T4.cpp b/level1/p04_ narcissus/L1T4.cpp new file mode 100644 index 00000000..c225afb4 --- /dev/null +++ b/level1/p04_ narcissus/L1T4.cpp @@ -0,0 +1,15 @@ +#include +int main() +{ + int hun,dec,uni,med,nar; + for(med=100;med<=999;med++) + { + hun=med/100; + dec=(med-(hun*100))/10; + uni=(med-(hun*100)-dec*10); + nar=hun*hun*hun+dec*dec*dec+uni*uni*uni; + if (nar==med) + printf("%d ",nar); + } + printf("\n"); +} From e26d96d3aa9c8c569fe7f08c21bf9f17d608a91c Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 20 Mar 2019 20:12:02 +0800 Subject: [PATCH 05/35] Level1 Exercise 1 update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 瀹氫箟甯搁噺鍏ㄥぇ鍐 --- level1/p01_runningLetter/L1T4.cpp | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 level1/p01_runningLetter/L1T4.cpp diff --git a/level1/p01_runningLetter/L1T4.cpp b/level1/p01_runningLetter/L1T4.cpp new file mode 100644 index 00000000..c949f2f5 --- /dev/null +++ b/level1/p01_runningLetter/L1T4.cpp @@ -0,0 +1,33 @@ +#include +#include +#include +#define LENGTH 20 + +int main () +{ + int a=0; + int b=1; + while(1) + { + a+=b; + system("cls"); + int i=0; + while(i Date: Mon, 25 Mar 2019 21:36:32 +0800 Subject: [PATCH 06/35] level1 Exercise5 --- level1/p05_allPrimes/L1T5.cpp | 41 +++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 level1/p05_allPrimes/L1T5.cpp diff --git a/level1/p05_allPrimes/L1T5.cpp b/level1/p05_allPrimes/L1T5.cpp new file mode 100644 index 00000000..afb46de3 --- /dev/null +++ b/level1/p05_allPrimes/L1T5.cpp @@ -0,0 +1,41 @@ +#include +#include +#include +void CreatePrime(int *primes, int n) +{ + int i, j, s; + primes[0] = primes[1] = 0; + for(i = 2; i < n; i++) + primes[i] = 1; + s = sqrt(n); + for(i = 2; i<= s; i++) + { + if(primes[i]) + { + for(j = 2 * i; j < n; j+=i) + primes[j] = 0; + } + } +} +int main() +{ + int i; + double run_time; + LARGE_INTEGER time_start; + LARGE_INTEGER time_over; + double dqFreq; + LARGE_INTEGER f; + QueryPerformanceFrequency(&f); + dqFreq=(double)f.QuadPart; + QueryPerformanceCounter(&time_start); + int IsPrime[1000]; + CreatePrime(IsPrime, 1000); + for(i = 2; i < 1000; i++) + if(IsPrime[i]) + printf("%d\t",i); + QueryPerformanceCounter(&time_over); + run_time=1000000*(time_over.QuadPart-time_start.QuadPart)/dqFreq; + printf("\nrun_time:%fus\n",run_time); + return 0; +} + From 2356fcb43578cfffb8b8600390c17b50acb9321f Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Mon, 25 Mar 2019 21:38:50 +0800 Subject: [PATCH 07/35] Update README.md --- level1/p05_allPrimes/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/level1/p05_allPrimes/README.md b/level1/p05_allPrimes/README.md index c59786a4..180bed30 100755 --- a/level1/p05_allPrimes/README.md +++ b/level1/p05_allPrimes/README.md @@ -2,4 +2,5 @@ 1. 鎵撳嵃2-1000浠ュ唴鐨勬墍鏈夌礌鏁 1. 鎵撳嵃鍑烘荤殑璁$畻鏃堕棿 -1. 灏藉彲鑳戒紭鍖栫畻娉曠殑鏁堢巼 \ No newline at end of file +1. 灏藉彲鑳戒紭鍖栫畻娉曠殑鏁堢巼 +// \ No newline at end of file From 4cdf1fccb9c78099645a7c567730ccb9b7ac889d Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Mon, 25 Mar 2019 21:46:57 +0800 Subject: [PATCH 08/35] Level1 Exercise6 --- level1/p06_Goldbach/L1T6.cpp | 59 ++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 level1/p06_Goldbach/L1T6.cpp diff --git a/level1/p06_Goldbach/L1T6.cpp b/level1/p06_Goldbach/L1T6.cpp new file mode 100644 index 00000000..10174d49 --- /dev/null +++ b/level1/p06_Goldbach/L1T6.cpp @@ -0,0 +1,59 @@ +#include + +int isPrime(int n); + +int main() +{ + int i = 0; + int j = 0; + int k1 = 0; + int k2 = 0; + int even[50]; + int ret1 = 0; + int ret2 = 0; + int count = 0; + for(i=4;i<=100;i+=2) + { + count = 0; + j = i; + k1 = j-1 ; + while(k1>=(j/2)) + { + ret1 = isPrime(k1); + if(ret1) + { + k2 = j - k1; + ret2 = isPrime(k2); + if(ret2) + { + printf("%d = %d + %d,", j, k2, k1); + count ++; + } + } + k1--; + } + printf("%d可以拆分为%d组!\n", i, count); + + } + return 0; +} +int isPrime(int n) +{ + int i = 0; + if(n<=1) + { + return 0; + } + if(2==n) + { + return 1; + } + for(i=2;i Date: Wed, 27 Mar 2019 17:49:37 +0800 Subject: [PATCH 09/35] Update L1T4.cpp --- level1/p04_ narcissus/L1T4.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/level1/p04_ narcissus/L1T4.cpp b/level1/p04_ narcissus/L1T4.cpp index c225afb4..6539a62b 100644 --- a/level1/p04_ narcissus/L1T4.cpp +++ b/level1/p04_ narcissus/L1T4.cpp @@ -9,7 +9,9 @@ int main() uni=(med-(hun*100)-dec*10); nar=hun*hun*hun+dec*dec*dec+uni*uni*uni; if (nar==med) - printf("%d ",nar); + { + printf("%d ",nar); + } } printf("\n"); } From 1ec64eeccd611c168fa6a57d30f1b73181d7e67c Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 27 Mar 2019 17:52:29 +0800 Subject: [PATCH 10/35] Update L1T5.cpp --- level1/p05_allPrimes/L1T5.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/level1/p05_allPrimes/L1T5.cpp b/level1/p05_allPrimes/L1T5.cpp index afb46de3..33b4dc25 100644 --- a/level1/p05_allPrimes/L1T5.cpp +++ b/level1/p05_allPrimes/L1T5.cpp @@ -32,7 +32,9 @@ int main() CreatePrime(IsPrime, 1000); for(i = 2; i < 1000; i++) if(IsPrime[i]) - printf("%d\t",i); + { + printf("%d\t",i); + } QueryPerformanceCounter(&time_over); run_time=1000000*(time_over.QuadPart-time_start.QuadPart)/dqFreq; printf("\nrun_time:%fus\n",run_time); From 9da8788464a90afa47c6f86d614b1a6c68bc0a0e Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 27 Mar 2019 19:52:31 +0800 Subject: [PATCH 11/35] Update L1T3.cpp --- level1/p03_Diophantus/L1T3.cpp | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/level1/p03_Diophantus/L1T3.cpp b/level1/p03_Diophantus/L1T3.cpp index b4891344..37d9f024 100644 --- a/level1/p03_Diophantus/L1T3.cpp +++ b/level1/p03_Diophantus/L1T3.cpp @@ -1,20 +1,5 @@ -### 编程解决下面的问题: -取自《希腊诗选》(Greek Anthology): -丢番图的童年经过了他一生的六分之一, - -青年经过了十二分之一, - -又有七分之一的时间是单身汉。 - -结婚五年后得了个儿子, - -儿子比父亲先死四年, - -年级是他的一半。 - -问儿子死时丢番图多大? #include int main() { From 549129cf362cda462a0113621a43097173383afe Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 3 Apr 2019 21:04:36 +0800 Subject: [PATCH 12/35] Exercise L1T8 --- level1/p08_hanoi/hanoi.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 level1/p08_hanoi/hanoi.cpp diff --git a/level1/p08_hanoi/hanoi.cpp b/level1/p08_hanoi/hanoi.cpp new file mode 100644 index 00000000..0216a178 --- /dev/null +++ b/level1/p08_hanoi/hanoi.cpp @@ -0,0 +1,31 @@ +#include +#include +/* + 思路:1.把 n-1个盘子先移动到2号底座 + 2.把1号底座上剩下的一个盘子移动到3号底座上 + 3.再把n-1个盘子从2号底座移动到3号底座上 +*/ +void move(char origin, char aim); +void hanoi(int n,char origin ,char aim,char mid); +int main() +{ + int n; + printf("input your number"); + scanf("%d",&n); + hanoi(n,'A','B','C'); + return 0; +} + void hanoi(int n,char origin ,char mid,char aim) + { + if(n==1) + return; + hanoi(n-1,origin ,aim,mid); + move(origin,aim); + hanoi(n-1,mid,origin,aim); + } +void move(char origin, char aim) +{ + printf("%c ---> %c\n", origin, aim); +} + + From 5f1fe823b2318e5cdb07c00b1c5d1854b9d3d2e4 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 3 Apr 2019 21:04:41 +0800 Subject: [PATCH 13/35] Update README.md --- level1/p08_hanoi/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/level1/p08_hanoi/README.md b/level1/p08_hanoi/README.md index 859be942..f1a36578 100755 --- a/level1/p08_hanoi/README.md +++ b/level1/p08_hanoi/README.md @@ -2,4 +2,13 @@ 1.姹夎濉旓細姹夎濉旓紙鍙堢О娌冲唴濉旓級闂鏄簮浜庡嵃搴︿竴涓彜鑰佷紶璇寸殑鐩婃櫤鐜╁叿銆傚ぇ姊靛ぉ鍒涢犱笘鐣岀殑鏃跺欏仛浜嗕笁鏍归噾鍒氱煶鏌卞瓙锛屽湪涓鏍规煴瀛愪笂浠庝笅寰涓婃寜鐓уぇ灏忛『搴忔憺鐫64鐗囬粍閲戝渾鐩樸傚ぇ姊靛ぉ鍛戒护濠嗙綏闂ㄦ妸鍦嗙洏浠庝笅闈㈠紑濮嬫寜澶у皬椤哄簭閲嶆柊鎽嗘斁鍦ㄥ彟涓鏍规煴瀛愪笂銆傚苟涓旇瀹氾紝鍦ㄥ皬鍦嗙洏涓婁笉鑳芥斁澶у渾鐩橈紝鍦ㄤ笁鏍规煴瀛愪箣闂翠竴娆″彧鑳界Щ鍔ㄤ竴涓渾鐩樸 -![](./hanoi.jpg) \ No newline at end of file +![](./hanoi.jpg) +鎬濊矾锛1.鎶 n-1涓洏瀛愬厛绉诲姩鍒2鍙峰簳搴 + 2.鎶1鍙峰簳搴т笂鍓╀笅鐨勪竴涓洏瀛愮Щ鍔ㄥ埌3鍙峰簳搴т笂 + 3.鍐嶆妸n-1涓洏瀛愪粠2鍙峰簳搴хЩ鍔ㄥ埌3鍙峰簳搴т笂 + 閫掑綊鎬濇兂鐨勭悊瑙o細 + + 1.閫掑綊濂犲熀銆傚厛鑰冭檻鏈鍩烘湰鐨勬儏鍐碉紝鍗虫棤闇閫掑綊灏辫兘瑙e嚭鐨勬儏鍐碉紝寮勬竻妤氬彉閲忕殑鍘诲悜鍜屼綔鐢ㄣ + 2.閫掑綊濂犲熀鎺ㄨ繘銆備粠鏈鍩烘湰鐨勬儏鍐典竴姝ユ璧板悜閫掑綊鏉ヨВ鍐筹紝姣忎竴娆¢掑綊璋冪敤閮借缁撴灉鏇存帴杩戠洰鏍囥 + 3.妗ユ鏋舵瀯銆傚亣璁炬墍鏈夌殑閫掑綊璋冪敤閮借兘杩愯銆 + 4.楂樻晥搴旂敤銆傚姏姹傛瘡涓姝ヨ皟鐢ㄩ兘璁╃粨鏋滄洿鎺ヨ繎鐩爣锛屼笉鍋氭棤鐢ㄥ姛銆 From 3f3305a1ed17c75c3abf7ce0e22db7fc10c00cca Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:18:48 +0800 Subject: [PATCH 14/35] Add files via upload --- ...0\345\257\206\350\247\243\345\257\206.txt" | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 "level1/p07_encrypt_decrypt/\345\212\240\345\257\206\350\247\243\345\257\206.txt" diff --git "a/level1/p07_encrypt_decrypt/\345\212\240\345\257\206\350\247\243\345\257\206.txt" "b/level1/p07_encrypt_decrypt/\345\212\240\345\257\206\350\247\243\345\257\206.txt" new file mode 100644 index 00000000..d2454a27 --- /dev/null +++ "b/level1/p07_encrypt_decrypt/\345\212\240\345\257\206\350\247\243\345\257\206.txt" @@ -0,0 +1,121 @@ +锘/* 鎴戠敤鐨勫嚡鎾掑姞瀵*/ +#include +#include +#include + //鍑芥暟encrypt()灏嗗瓧姣嶉『搴忔帹鍚巒浣嶏紝瀹炵幇鏂囦欢鍔犲瘑鍔熻兘 +void encrypt(char str[],int n) +{ + char c; + int i; + for(i=0;i='a' && c<='z')//c鏄皬鍐欏瓧姣 + { + if(c+n%26<='z') //鑻ュ姞瀵嗗悗涓嶈秴鍑哄皬鍐欏瓧姣嶈寖鍥 + { + str[i]=(char)(c+n%26); //鍔犲瘑鍑芥暟 + } + else + { + str[i]=(char)(c+n%26-26);//鍔犲瘑鍚庤秴鍑哄皬鍐欏瓧姣嶈寖鍥,浠庡ご寮濮嬪惊鐜皬鍐欏瓧姣 + } + } + else if(c>='A' && c<='Z')//c涓哄ぇ鍐欏瓧姣 + { + if(c + n%26 <= 'Z') //鍔犲瘑鍚庝笉瓒呭嚭澶у啓瀛楁瘝鑼冨洿 + { + str[i]=(char)(c+n%26); + } + else + { + str[i]=(char)(c+n%26-26);//鍔犲瘑鍚庤秴鍑哄ぇ鍐欏瓧姣嶈寖鍥,浠庡ご寮濮嬪惊鐜ぇ鍐欏瓧姣 + } + } + else + { + str[i]=c;//涓嶆槸瀛楁瘝锛屼笉鍔犲瘑 + } + } + printf("\nAfter encrypt: \n"); + puts(str); //杈撳嚭鍔犲瘑鍚庣殑瀛楃涓 +} + + +//decrypt()瀹炵幇瑙e瘑鍔熻兘锛屽皢瀛楁瘝椤哄簭鍓嶇Щn浣 +void decrypt(char str[],int n) +{ + char c; + int i; + //閬嶅巻瀛楃涓 + for(i=0;i='a' && c<='z') + { + + if(c-n%26>='a') //瑙e瘑鍚庤繕涓哄皬鍐欏瓧姣嶏紝鐩存帴瑙e瘑 + { + str[i]=(char)(c-n%26); + } + else + { + + str[i]=(char)(c-n%26+26); //瑙e瘑鍚庝笉涓哄皬鍐欏瓧姣嶄簡锛岄氳繃寰幆灏忓啓瀛楁瘝澶勭悊涓哄皬鍐欏瓧姣 + } + } + else if(c >= 'A' && c<='Z') //c涓哄ぇ鍐欏瓧姣 + { + if(c-n%26>='A') //瑙e瘑鍚庤繕涓哄ぇ鍐欏瓧姣 + { + str[i]=(char)(c-n%26); + } + else + { + str[i]=(char)(c-n%26+26); //瑙e瘑鍚庝笉涓哄ぇ鍐欏瓧姣嶄簡,寰幆澶у啓瀛楁瘝,澶勭悊涓哄ぇ鍐欏瓧姣 + } + else + { + str[i]=c; //闈炲瓧姣嶄笉澶勭悊 + } + } + printf("\nAfter decrypt: \n"); + puts(str); //杈撳嚭瑙e瘑鍚庣殑瀛楃涓 +} + +int main() +{ + char str[50]; + int k=0,n=0,i=1; + printf("\nPlease input strings: "); + scanf("%s",str); //杈撳叆鍔犲瘑瑙e瘑瀛楃涓 + //鎵撳嵃鑿滃崟 + printf("-----------------\n"); + printf("1: Encryption\n"); + printf("2: Decryption\n"); + printf("3: Violent Crack\n"); //鏆村姏鐮磋В + printf("-----------------\n"); + printf("\nPlease choose: "); + scanf("%d",&k); + if(k==1) + { + printf("\nPlease input number: "); + scanf("%d",&n); + encrypt(str,n); + } + else if(k==2) + { + printf("\nPlease input number: "); + scanf("%d",&n); + decrypt(str,n); + } + else + { + for(i=1;i<=25;++i) + { + printf("%d ",i); //灏濊瘯鎵鏈夊彲鑳界殑n鍊艰繘琛屾毚鍔涚牬瑙 + decrypt(str,i); + } + } + return 0; +} From 7e340fa18ecb86ca1f037c8db675fd59f89e6a44 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:19:50 +0800 Subject: [PATCH 15/35] Add files via upload --- level1/p09_maze/mazeutf.txt | 164 ++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 level1/p09_maze/mazeutf.txt diff --git a/level1/p09_maze/mazeutf.txt b/level1/p09_maze/mazeutf.txt new file mode 100644 index 00000000..739260d2 --- /dev/null +++ b/level1/p09_maze/mazeutf.txt @@ -0,0 +1,164 @@ +锘#include +#include +#include +#include +#define Height 25 //杩峰鐨勯珮搴 +#define Width 25 //杩峰鐨勫搴 +#define Wall 1 +#define Road 0 +#define Start 2 +#define End 3 +#define Esc 5 +#define Up 1 +#define Down 2 +#define Left 3 +#define Right 4 +int map[Height+2][Width+2]; +void gotoxy(int x,int y) //鐜╁鍧愭爣 +{ + COORD coord; + coord.X=x; + coord.Y=y; + SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); +} +void hidden()//闅愯棌鍏夋爣 +{ + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_CURSOR_INFO cci; + GetConsoleCursorInfo(hOut,&cci); + cci.bVisible=0;//璧1涓烘樉绀猴紝璧0涓洪殣钘 + SetConsoleCursorInfo(hOut,&cci); +} +void create(int x,int y) //闅忔満鐢熸垚杩峰 +{ + int c[4][2]={0,1,1,0,0,-1,-1,0}; //鍥涗釜鏂瑰悜 + int i,j,t;//灏嗘柟鍚戞墦涔 + for(i=0;i<4;i++) + { + j=rand()%4; + t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; + t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; + } + map[x][y]=Road; + for(i=0;i<4;i++) + if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) + { + map[x+c[i][0]][y+c[i][1]]=Road; + create(x+2*c[i][0],y+2*c[i][1]); + } +} +int get_key() //鎺ユ敹鎸夐敭 +{ + char c; + while(c=getch()) + { + if(c==27) return Esc; //Esc + if(c!=-32)continue; + c=getch(); + if(c==72) return Up; //涓 + if(c==80) return Down; //涓 + if(c==75) return Left; //宸 + if(c==77) return Right; //鍙 + } + return 0; +} +void paint(int x,int y) //鐢昏糠瀹 +{ + gotoxy(2*y-2,x-1); + switch(map[x][y]) + { + case Start: + printf("鍏");break; // + case End: + printf("鍑");break; // + case Wall: + printf("鈻");break; // + case Road: + printf(" ");break; // + } +} +void game() +{ + int x=2,y=1; //鐜╁褰撳墠浣嶇疆锛屽垰寮濮嬪湪鍏ュ彛澶 + int c; //鐢ㄦ潵鎺ユ敹鎸夐敭 + while(1) + { + gotoxy(2*y-2,x-1); + printf("鈼"); //鐢诲嚭鐜╁褰撳墠浣嶇疆 + if(map[x][y]==End) //鍒ゆ柇鏄惁鍒拌揪鍑哄彛 + { + gotoxy(30,24); + printf("鍒拌揪缁堢偣锛屾寜浠绘剰閿粨鏉"); + getch(); + break; + } + c=get_key(); + if(c==Esc) + { + gotoxy(0,24); + break; + } + switch(c) + { + case Up: //鍚戜笂璧 + if(map[x-1][y]!=Wall) + { + paint(x,y); + x--; + } + break; + case Down: //鍚戜笅璧 + if(map[x+1][y]!=Wall) + { + paint(x,y); + x++; + } + break; + case Left: //鍚戝乏璧 + if(map[x][y-1]!=Wall) + { + paint(x,y); + y--; + } + break; + case Right: //鍚戝彸璧 + if(map[x][y+1]!=Wall) + { + paint(x,y); + y++; + } + break; + } + } +} +int main() +{ + system("title your name"); + int i,j; + srand((unsigned)time(NULL)); //鍒濆鍖栭殢鏈虹瀛 + hidden(); //闅愯棌鍏夋爣 + for(i=0;i<=Height+1;i++) + for(j=0;j<=Width+1;j++) + if(i==0||i==Height+1||j==0||j==Width+1) //鍒濆鍖栬糠瀹 + map[i][j]=Road; + else map[i][j]=Wall; + create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //浠庨殢鏈轰竴涓偣寮濮嬬敓鎴愯糠瀹 + for(i=0;i<=Height+1;i++) //杈圭晫澶勭悊 + { + map[i][0]=Wall; + map[i][Width+1]=Wall; + } + for(j=0;j<=Width+1;j++) //杈圭晫澶勭悊 + { + map[0][j]=Wall; + map[Height+1][j]=Wall; + } + map[2][1]=Start; //缁欏畾鍏ュ彛 + map[Height-1][Width]=End; //缁欏畾鍑哄彛 + for(i=1;i<=Height;i++) + for(j=1;j<=Width;j++) //鐢诲嚭杩峰 + paint(i,j); + game(); //寮濮嬫父鎴 + getch(); + return 0; +} From d214aba0585560952a38df947727ac64dc760f4b Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:20:23 +0800 Subject: [PATCH 16/35] Add files via upload --- ...46\216\250\347\256\261\345\255\220utf.txt" | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 "level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" diff --git "a/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" "b/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" new file mode 100644 index 00000000..709de83b --- /dev/null +++ "b/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" @@ -0,0 +1,165 @@ +锘 +#include +#include +#include + +int map[9][11] = { + {0,1,1,1,1,1,1,1,1,1,0}, //0浠h〃绌哄湴 + {0,1,0,0,0,1,0,0,0,1,0}, //1浠h〃澧 + {0,1,0,4,4,4,4,4,0,1,0}, //3浠h〃鐩殑鍦 + {0,1,0,4,0,4,0,4,0,1,1}, //4浠h〃绠卞瓙 + {0,1,0,0,0,0,0,0,4,0,1}, //5浠h〃浜 + {1,1,0,1,1,1,1,0,4,0,1}, + {1,0,8,3,3,3,3,1,0,0,1}, //2 3 4 5 6 7 8 9 1 0 + {1,0,3,3,3,3,3,0,0,1,1}, + {1,1,1,1,1,1,1,1,1,1,0} }; +void DrawMap() +{ + //閬嶅巻浜岀淮鏁扮粍 //0 鎵撳嵃绌烘牸 //1 澧 //3 鐩殑鍦 + for (int i = 0; i < 9; i++) + { + for (int j = 0; j < 11; j++) + { + //if else switch + switch (map[i][j]) + { + case 0: + printf(" "); + break; + case 1: + printf("鈻"); + break; + case 3: + printf("鈽"); + break; + case 4: + printf("鈻"); + break; + case 5: + printf("鈾"); + break; + case 7: + printf("鈽"); + break; + case 8: + printf("鈾"); + break; + } + } + printf("\n"); + } +} + + +void PlayGame() +{ + int r, c; //浜虹殑涓嬫爣 + for (int i = 0; i < 9; i++) + { + for (int j = 0; j < 11; j++) + { + if (map[i][j] == 5||map[i][j]==8) //i j 浜虹殑涓嬫爣 + { + r = i; + c = j; + } + } + } + + char ch; //瀛楃鍙橀噺 + ch = getch(); //閿洏鐨勮緭鍏ヤ繚瀛樺埌瀛楃涓 + // getch() getchar() 鎺ユ敹閿洏瀛楃 + // getch()鐩存帴鎺ユ敹 涓嶆樉绀哄洖鏂 getchar()鏄剧ず鍥炴枃鍙互淇敼 enter閿粨鏉 + + //鏍规嵁涓嶅悓鐨勬寜閿 鏀瑰彉涓嶅悓鐨勫. 鍒嗘敮. + switch (ch) + { + case 'W': //W A S D鏂瑰悜 + case 'w': + case 72: + if (map[r - 1][c] == 0|| map[r - 1][c] == 3) + { + map[r - 1][c] += 5; + map[r][c] -= 5; + } + else if (map[r - 1][c] == 4 || map[r - 1][c] == 7) + { + if (map[r - 2][c] == 0 || map[r - 2][c] == 3) + { + map[r - 2][c] += 4; + map[r - 1][c] += 1; + map[r][c] -= 5; + } + } + break; + case 'S': //enter鎸夐敭鐨勪綔鐢 纭 杩斿洖 + case 's': + case 80: + if (map[r + 1][c] == 0 || map[r + 1][c] == 3) + { + map[r + 1][c] += 5; + map[r][c] -= 5; + } + else if (map[r + 1][c] == 4 || map[r+ 1][c] == 7) + { + if (map[r + 2][c] == 0 || map[r + 2][c] == 3) + { + map[r + 2][c] += 4; + map[r + 1][c] += 1; + map[r][c] -= 5; + } + } + break; + + case 'A': + case 'a': + case 75: + if (map[r ][c - 1] == 0 || map[r ][c - 1] == 3) + { + map[r ][c - 1] += 5; + map[r][c] -= 5; + } + else if (map[r][c - 1] == 4 || map[r][c - 1] == 7) + { + if (map[r ][c - 2] == 0 || map[r ][c - 2] == 3) + { + map[r ][c - 2] += 4; + map[r ][c - 1] += 1; + map[r][c] -= 5; + } + } + break; + + case 'D': + case 'd': + case 77: + if (map[r][c + 1] == 0 || map[r][c + 1] == 3) + { + map[r][c + 1] += 5; + map[r][c] -= 5; + } + else if (map[r][c + 1] == 4 || map[r][c + 1] == 7) + { + if (map[r][c + 2] == 0 || map[r][c + 2] == 3) + { + map[r][c + 2] += 4; + map[r][c + 1] += 1; + map[r][c] -= 5; + } + } + break; + } +} + +// +int main() //涓诲嚱鏁 +{ + while (1) + { + system("cls"); + DrawMap(); + PlayGame(); + } + + return 0; +} From dc210c8180ccf917bf80420352343f03e45419f6 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:20:59 +0800 Subject: [PATCH 17/35] Add files via upload --- .../utf\350\266\205\345\270\202.txt" | 312 ++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 "level1/p12_warehouse/utf\350\266\205\345\270\202.txt" diff --git "a/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" "b/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" new file mode 100644 index 00000000..82a02221 --- /dev/null +++ "b/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" @@ -0,0 +1,312 @@ +锘#include +#include +#include +#define MAX 10 +void start(); +void output(); +void input(); +void change(); +void dele(); +void search(); +void insert(); +struct GOODS +{ + char goods_id[30]; + char goods_name[30]; + char goods_price[20]; + char goods_discount[20]; + int goods_amount; + int goods_remain; +}; +struct GOODS goods[MAX],goodsinsert[MAX],G[MAX]; +int count=0; +int main() +{ + while(1) + start(); + } +void start() +{ +int ch; +printf("\n\t\t\t\t瓒呭競鍟嗗搧淇℃伅绠$悊绯荤粺\n"); +printf("\t\t\t****************************\n"); +printf("\t\t\t1.鍟嗗搧鐨勫綍鍏n"); +printf("\t\t\t2.淇敼鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t3.鍒犻櫎鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t4.鏌ユ壘鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t5.鎻掑叆鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t6.閫鍑虹郴缁焅n"); +printf("\t\t\t****************************\n"); +printf("\n\n杈撳叆浣犵殑閫夋嫨锛1-6锛:"); +scanf("%d",&ch); + switch(ch) + { + case 1: + { + input(); + break;} + case 2: + { + change(); + break; + } + case 3: + { + dele(); + break; + } + case 4: + { + search(); + break; + } + case 5: + { + insert(); + break; + } + default : + { + printf("\n閫鍑虹郴缁熷苟鎸変换鎰忛敭閫鍑虹郴缁"); + exit(EXIT_SUCCESS); + } + } + + +} + + +void input() +{ + + + char flag[20]; + do + { + printf("璇疯緭鍏ヤ綘鐨勫晢鍝佷俊鎭:\n"); + printf("鍟嗗搧缂栧彿:"); + scanf("%s",goods[count].goods_id); + printf("鍟嗗搧鍚嶅瓧:"); + scanf("%s",goods[count].goods_name); + printf("鍟嗗搧浠锋牸:"); + scanf("%s",goods[count].goods_price); + printf("鍟嗗搧鎶樻墸:"); + scanf("%s",goods[count].goods_discount); + printf("鍟嗗搧鎬绘暟鐩:"); + scanf("%d",&goods[count].goods_amount); + printf("鍟嗗搧鍓╀綑鏁扮洰:"); + scanf("%d",&goods[count].goods_remain); + count++; + printf("鏄惁缁х画杈撳叆鏁版嵁 y鏄 n鍚 : "); + scanf("%s",flag); + }while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0); + output(); +} +void change() +{ + char ch[20],a[20]; + int i,t,m=0; + printf("\n鏄惁鏍规嵁鍟嗗搧鐨勭紪鍙疯繘琛屼慨鏀 (y/n): "); + scanf("%s",ch); + if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) + { + printf("\n杈撳叆鍟嗗搧鐨勭紪鍙:"); + scanf("%s",a); + for(i=0;i Date: Sun, 23 Jun 2019 12:21:37 +0800 Subject: [PATCH 18/35] Create FiveChess --- FiveChess | 1 + 1 file changed, 1 insertion(+) create mode 100644 FiveChess diff --git a/FiveChess b/FiveChess new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/FiveChess @@ -0,0 +1 @@ + From 2530e96b08f51ceeb3bcbdf47be575d743546cc2 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:22:18 +0800 Subject: [PATCH 19/35] Delete FiveChess --- FiveChess | 1 - 1 file changed, 1 deletion(-) delete mode 100644 FiveChess diff --git a/FiveChess b/FiveChess deleted file mode 100644 index 8b137891..00000000 --- a/FiveChess +++ /dev/null @@ -1 +0,0 @@ - From c9d8dfcbb80a8dfd9150953c8ddb84e22fa4ccbb Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 12:22:55 +0800 Subject: [PATCH 20/35] Add files via upload --- thoughts of WUZIQI.txt | 41 + "\344\272\224\345\255\220\346\243\213txt.txt" | 1164 +++++++++++++++++ 2 files changed, 1205 insertions(+) create mode 100644 thoughts of WUZIQI.txt create mode 100644 "\344\272\224\345\255\220\346\243\213txt.txt" diff --git a/thoughts of WUZIQI.txt b/thoughts of WUZIQI.txt new file mode 100644 index 00000000..2d33aa56 --- /dev/null +++ b/thoughts of WUZIQI.txt @@ -0,0 +1,41 @@ +todolist锛 +1.build the map; +2.realize the choosing position +3.computer choose position +4.judge the winner. +5.computer choose better +details: +1.mouse choose? consele choose? +some information: +绗竴澶ц剳: 钀藉瓙閫夋嫨鍣 +AlphaGo鐨勭涓涓缁忕綉缁滃ぇ鑴戞槸鈥滅洃鐫e涔犵殑绛栫暐缃戠粶(Policy Network)鈥 锛 +瑙傚療妫嬬洏甯冨眬浼佸浘鎵惧埌鏈浣崇殑涓嬩竴姝ャ +浜嬪疄涓婏紝瀹冮娴嬫瘡涓涓悎娉曚笅涓姝ョ殑鏈浣虫鐜囷紝閭d箞鏈鍓嶉潰鐚滄祴鐨勫氨鏄偅涓鐜囨渶楂樼殑銆 +浣犲彲浠ョ悊瑙f垚鈥滆惤瀛愰夋嫨鍣ㄢ濄 +AlphaGo绯荤粺浜嬪疄涓婇渶瑕佷袱涓澶栬惤瀛愰夋嫨鍣ㄧ殑澶ц剳銆 +涓涓槸鈥滃己鍖栧涔犵殑绛栫暐缃戠粶锛圥olicy Network锛夆濓紝閫氳繃鐧句竾绾ч澶栫殑妯℃嫙灞鏉ュ畬鎴愩 +浣犲彲浠ョО涔嬩负鏇村己鐨勩 +姣旇捣鍩烘湰鐨勮缁冿紝鍙槸鏁欑綉缁滃幓妯′豢鍗曚竴浜虹被鐨勮惤瀛愶紝楂樼骇鐨勮缁冧細涓庢瘡涓涓ā鎷熸灞涓嬪埌搴曪紝鏁欑綉缁滄渶鍙兘璧㈢殑涓嬩竴鎵嬨 +Sliver鍥㈤槦閫氳繃鏇村己鐨勮惤瀛愰夋嫨鍣ㄦ荤粨浜嗙櫨涓囩骇璁粌妫嬪眬锛屾瘮浠栦滑涔嬪墠鐗堟湰鍙堣凯浠d簡涓嶅皯銆 +鍗曞崟鐢ㄨ繖绉嶈惤瀛愰夋嫨鍣ㄥ氨宸茬粡鏄己澶х殑瀵规墜浜嗭紝鍙互鍒颁笟浣欐鎵嬬殑姘村钩锛屾垨鑰呰璺熶箣鍓嶆渶寮虹殑鍥存AI濯茬編銆 +杩欓噷閲嶇偣鏄繖绉嶈惤瀛愰夋嫨鍣ㄤ笉浼氬幓鈥滆鈥濄傚畠灏辨槸绠鍗曞瑙嗕粠鍗曚竴妫嬬洏浣嶇疆锛屽啀鎻愬嚭浠庨偅涓綅缃垎鏋愬嚭鏉ョ殑钀藉瓙銆 +瀹冧笉浼氬幓妯℃嫙浠讳綍鏈潵鐨勮蛋娉曘傝繖灞曠ず浜嗙畝鍗曠殑娣卞害绁炵粡缃戠粶瀛︿範鐨勫姏閲忋 +绗簩澶ц剳锛氭灞璇勪及鍣 锛圥osition Evaluator锛 +AlphaGo鐨勭浜屼釜澶ц剳鐩稿浜庤惤瀛愰夋嫨鍣ㄦ槸鍥炵瓟鍙︿竴涓棶棰樸 +涓嶆槸鍘荤寽娴嬪叿浣撲笅涓姝ワ紝瀹冮娴嬫瘡涓涓鎵嬭耽妫嬬殑鍙兘锛屽湪缁欏畾妫嬪瓙浣嶇疆鎯呭喌涓嬨 +杩欌滃眬闈㈣瘎浼板櫒鈥濆氨鏄鏂囦腑鎻愬埌鐨勨滀环鍊肩綉缁滐紙Value Network)鈥濓紝閫氳繃鏁翠綋灞闈㈠垽鏂潵杈呭姪钀藉瓙閫夋嫨鍣ㄣ +杩欎釜鍒ゆ柇浠呬粎鏄ぇ姒傜殑锛屼絾瀵逛簬闃呰閫熷害鎻愰珮寰堟湁甯姪銆 +閫氳繃鍒嗙被娼滃湪鐨勬湭鏉ュ眬闈㈢殑鈥滃ソ鈥濅笌鈥滃潖鈥濓紝AlphaGo鑳藉鍐冲畾鏄惁閫氳繃鐗规畩鍙樼鍘绘繁鍏ラ槄璇汇 +濡傛灉灞闈㈣瘎浼板櫒璇磋繖涓壒娈婂彉绉嶄笉琛岋紝閭d箞AI灏辫烦杩囬槄璇诲湪杩欎竴鏉$嚎涓婄殑浠讳綍鏇村钀藉瓙銆 +钂欑壒鍗℃礇鏍戞悳绱㈢畻娉 +濡傛灉鎷ユ湁鏃犻檺鐨勮绠楄兘鍔涳紝MCTS鍙互鐞嗚涓婂幓璁$畻鏈浣宠惤瀛愰氳繃鎺㈢储姣忎竴灞鐨勫彲鑳芥楠ゃ +浣嗘湭鏉ヨ蛋娉曠殑鎼滅储绌洪棿瀵逛簬鍥存鏉ヨ澶ぇ浜嗭紙澶у埌姣旀垜浠鐭ュ畤瀹欓噷鐨勭矑瀛愯繕澶氾級锛屽疄闄呬笂AI娌℃湁鍔炴硶鎺㈢储姣忎竴涓彲鑳界殑鍙樼銆 +MCTS鍋氭硶姣斿叾浠朅I鏈夊濂界殑鍘熷洜鏄湪璇嗗埆鏈夊埄鐨勫彉绉嶏紝杩欐牱鍙互璺宠繃涓浜涗笉鍒╃殑銆 +Silver鍥㈤槦璁〢lphaGo瑁呬笂MCTS绯荤粺鐨勬ā鍧楋紝杩欑妗嗘灦璁╄璁¤呭幓宓屽叆涓嶅悓鐨勫姛鑳藉幓璇勪及鍙樼銆 +鏈鍚庨┈鍔涘叏寮鐨凙lphaGo绯荤粺鎸夊涓嬫柟寮忎娇鐢ㄤ簡鎵鏈夎繖浜涘ぇ鑴戙 +1. 浠庡綋鍓嶇殑妫嬬洏甯冨眬锛岄夋嫨鍝簺涓嬩竴姝ョ殑鍙兘鎬с +浠栦滑鐢ㄥ熀纭鐨勮惤瀛愰夋嫨鍣ㄥぇ鑴戯紙浠栦滑灏濊瘯浣跨敤鏇村己鐨勭増鏈紝浣嗕簨瀹炰笂璁〢lphaGo鏇村急锛屽洜涓鸿繖娌℃湁璁㎝CTS鎻愪緵鏇村箍闃旂殑閫夋嫨绌洪棿锛夈 +瀹冮泦涓湪鈥滄槑鏄炬渶濂解濈殑钀藉瓙鑰屼笉鏄槄璇诲緢澶氾紝鑰屼笉鏄啀鍘婚夋嫨涔熻瀵瑰悗鏉ユ湁鍒╃殑涓嬫硶銆 +2. 瀵逛簬姣忎竴涓彲鑳界殑钀藉瓙锛岃瘎浼拌川閲忔湁涓ょ鏂瑰紡锛氳涔堢敤妫嬬洏涓婂眬闈㈣瘎浼板櫒鍦ㄨ惤瀛愬悗锛岃涔堣繍琛屾洿娣卞叆钂欑壒鍗$綏妯℃嫙鍣紙婊氬姩锛夊幓鎬濊冩湭鏉ョ殑钀藉瓙锛屼娇鐢ㄥ揩閫熼槄璇荤殑钀藉瓙閫夋嫨鍣ㄥ幓鎻愰珮鎼滅储閫熷害銆 +AlphaGo浣跨敤绠鍗曞弬鏁帮紝鈥滄贩鍚堢浉鍏崇郴鏁扳濓紝灏嗘瘡涓涓寽娴嬪彇鏉冮噸銆 +鏈澶ч┈鍔涚殑AlphaGo浣跨敤 50/50鐨勬贩鍚堟瘮锛屼娇鐢ㄥ眬闈㈣瘎浼板櫒鍜屾ā鎷熷寲婊氬姩鍘诲仛骞宠 鍒ゆ柇銆 \ No newline at end of file diff --git "a/\344\272\224\345\255\220\346\243\213txt.txt" "b/\344\272\224\345\255\220\346\243\213txt.txt" new file mode 100644 index 00000000..422ebcad --- /dev/null +++ "b/\344\272\224\345\255\220\346\243\213txt.txt" @@ -0,0 +1,1164 @@ +锘#include +#include +#include//API鍑芥暟澶存枃浠 +#include//鎺у埗鍙拌緭 鍏ヨ緭鍑哄ご鏂囦欢 + +/*鐣岄潰棰滆壊瀹忓畾涔*/ +#define WhiteColor 63 +#define BlackColor 48 +#define Menu 2 +#define ChessBackground 125 +#define ChessBoardColor 48 +#define TipColor 6//缁胯壊 + +HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);//寰楀埌涓涓爣鍑嗙殑杈撳嚭鍙ユ焺 + +char Chess[15][15][3];//妫嬪瀷瀛楃鏁扮粍 + +int type=0;//璁板綍浜轰汉瀵规垬or浜烘満瀵规垬锛宼ype涓0浜轰汉瀵规垬锛宼ype涓1浜烘満瀵规垬锛岄粯璁や负浜轰汉瀵规垬 + +int flag=-1;//璁板綍榛戠櫧妫嬪摢鏂瑰厛钀藉瓙锛宖lag涓0鐧藉瓙锛堢數鑴戯級鍏堬紝flag涓1榛戝瓙锛堢帺瀹讹級鍏 + +int count=0;//璁板綍涓嬫姝ユ暟锛屼竴鍏卞彲涓225姝 + +int status[15][15]={0};//鏍囪瘑褰撳墠浣嶇疆鐘舵侊紝status[i][j]涓0琛ㄦ槑姝や綅缃负绌猴紝status[i][j]涓1琛ㄦ槑涓虹櫧妫嬶紙鐢佃剳锛夛紝status[i][j]涓2琛ㄦ槑褰撳墠浣嶇疆涓洪粦妫嬶紙鐜╁锛 + +int Winner=0;//鏍囪瘑璧㈠锛學inner=1琛ㄦ槑鐧芥锛堢數鑴戯級鑳滐紝Winner=2琛ㄦ槑榛戞锛堢帺瀹讹級鑳 + +int x=40, y=1;//琛ㄧず褰撳墠榧犳爣鐨勪綅缃 + +int prex=0, prey=0;//璁板綍褰撳墠妫嬫墜涓嬫浣嶇疆锛岀敤浜庢倲妫嬪嚱鏁 + +int prex1=0, prey1=0;//璁板綍妫嬫墜涓婁竴姝ヤ笅妫嬬殑浣嶇疆锛岀敤浜庣數鑴戞倲妫嬪弬鏁 + +int Value1[15][15]={0};//鏀诲嚮鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +int Value2[15][15]={0};//闃插畧鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +void GameStart();//涓嬫鍑芥暟 + +void TextColor(int color)//璁剧疆棰滆壊鍑芥暟 +{ + SetConsoleTextAttribute(hOutput,color);//璁剧疆鎺у埗鍙版枃鏈睘鎬 +} + +void ChessBord()//缁樺埗妫嬬洏褰㈢姸 +{ + int i, j; + strcpy(Chess[0][0],"鈹");//璁剧疆妫嬬洏鍥涜 + strcpy(Chess[14][0],"鈹"); + strcpy(Chess[0][14],"鈹"); + strcpy(Chess[14][14],"鈹"); + for(i=1;i<14;i++) + { + strcpy(Chess[i][0],"鈹"); + strcpy(Chess[i][14],"鈹"); + } + for(j=1;j<14;j++) + { + strcpy(Chess[0][j],"鈹"); + strcpy(Chess[14][j],"鈹"); + } + for(i=1;i<14;i++) + for(j=1;j<14;j++) + strcpy(Chess[i][j],"鈹"); +} + +void ShowChessBoard()//杈撳嚭妫嬬洏褰㈢姸 +{ + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + TextColor(ChessBoardColor);//妫嬬洏棰滆壊 + printf("%s",Chess[i][j]); + //printf(" "); // win10鐜闇瑕佹坊鍔犺璇彞锛屽惁鍒欑晫闈㈡樉绀烘湁闂 + } + printf("\n"); + } +} + +void getto(int x,int y)//鍏夋爣鍑芥暟 +{ + COORD cursor={0,0};//瀹氫箟涓涓厜鏍囧璞 + cursor.X=x; + cursor.Y=y; + SetConsoleCursorPosition(hOutput,cursor);//璁剧疆鍏夋爣浣嶇疆 +} + +void ChooseFirst() //鍏堟墜鍑芥暟锛岀‘瀹氫汉浜/鏈烘ā寮忎互鍙婂厛鍚庢墜 +{ + switch(y) + { + case 3: + { + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐧藉瓙鍏堟墜"); + getto(x,y+2); + printf("2.榛戝瓙鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break;//涓 + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break;//涓 + case 13:if(y==3) flag=0;else flag=1; break;//flag=0 鐧藉瓙鍏堟墜 flag=1 榛戝瓙鍏堟墜 + case 'e':case 'E':case 27: + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + case 5: + { + type=1; //浜烘満瀵规垬妯″紡 + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐢佃剳鍏堟墜"); + getto(x,y+2); + printf("2.鐜╁鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch()) + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break; + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break; + case 13:if(y==3) flag=0;else flag=1;break; //flag=0 鐢佃剳鍏堟墜 flag=1 鐜╁鍏堟墜 + case 'e':case 'E': + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + default: + break; + } +} + +void ShowMenu()//杈撳嚭鑿滃崟閫夐」锛岀敤鎴峰彲瑙嗗寲鐣岄潰 +{ + getto(40,1); + TextColor(Menu); + printf("娆㈣繋浣跨敤浜斿瓙妫"); + getto(36,3); + printf("1.浜轰汉瀵规垬"); + getto(36,5); + printf("2.浜烘満瀵规垬"); + getto(36,7); + printf("B鎮旀(鎸夊揩鎹烽敭B鍗冲彲瀹炶鎮旀)"); + getto(36,9); + printf("E閫鍑(鎸夊揩鎹烽敭E鍗冲彲瀹炶閫鍑)"); + getto(36,11); + printf("R閲嶆柊寮濮(鎸夊揩鎹烽敭R鍗冲彲瀹炶閲嶆柊寮濮)"); + getto(0,16); + printf(" 鎿嶄綔璇存槑锛歕n\n"); + printf("1.鐢ㄦ埛搴斿厛閫夋嫨娓告垙妯″紡锛屽彲浠ユ寜蹇嵎閿'1'銆'2'杩涜閫夋嫨锛屼篃鍙氳繃绉诲姩鍏夋爣瀹炵幇\n\n2.纭畾涓嬫浣嶇疆鍙寜鈫戙佲啌銆佲啇銆佲啋涓姝ユ绉诲姩鍏夋爣,涔熷彲鎸'W'锛堝揩閫熷埌鍒楅锛夈'S'锛堝揩閫熷埌鍒楀熬锛夈'A'锛堝揩閫熷埌琛岄锛夈'D'锛堝揩閫熷埌琛屽熬锛塡n\n3.鎸塭nter纭畾钀藉瓙锛屽悓鏃舵湰娓告垙鎻愪緵鐩稿簲蹇嵎閿搷浣滐紙璇﹁妫嬬洏鍙充晶锛"); + x=36,y=3; + getto(x,y); + while(1) + { + if(flag!=-1) + break; + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case '2': + { + y=5; + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 72: + { + if(y<=3)y=3;else y-=2;//鎺у埗鍏夋爣涓嶄笂瓒呯涓夎 + getto(x,y); + }break; + case 80: + { if(y>=5)y=5;else y+=2;//鎺у埗鍏夋爣涓嶄笅瓒呯浜旇 + getto(x,y); + }break; + case 13: + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + {getto(36,15);exit(0);} + }break;//鎻愬墠缁堟姣旇禌 + default: + break; + } + + }//while缁撴潫锛屽緱鍒扮敤鎴风殑閫夋嫨缁撴灉锛屽嵆浣曟柟鍏堜笅 +} + +void showplayer()//鏄剧ず鍝柟鎵у瓙 +{ + + TextColor(TipColor); + if(type==0)//浜轰汉妯″紡 + { + if(count%2==flag) + printf("鐧藉瓙鎵ф墜"); + else + printf("榛戝瓙鎵ф墜"); + } + else //浜烘満妯″紡 + { + if(count%2==flag) + printf("鐢佃剳鎵ф墜"); + else + printf("鐜╁鎵ф墜"); + } +} + +void WhiteChess(int x,int y)//杈撳嚭鐧芥瀛 +{ + getto(x,y); + TextColor(WhiteColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +void BlackChess(int x,int y)//杈撳嚭榛戞瀛 +{ + getto(x,y); + TextColor(BlackColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +int ResultCheck(int x,int y,int player) //鍒ゆ柇鏄惁鏈変汉鑳滃埄锛岃嫢鏈変汉鑾疯儨鍒欒繑鍥瀙layer,鍙嶄箣杩斿洖0 +{ + int n1, n2; + int i, j; + n1=n2=0; + for(i=x,j=y;j>=0;j--)//寰宸︽暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x,j=y+1;j<15;j++)//寰鍙虫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0;i--)//寰涓婃暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y;i<15;i++)//寰涓嬫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0&&j>=0;i--,j--)//寰宸︿笂鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y+1;i<15&&j<15;i++,j++)//寰鍙充笅鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i<15&&j>=0;i++,j--)//寰宸︿笅鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x-1,j=y+1;i>=0&&j<15;i--,j++)//寰鍙充笂鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + return 0; //鏈湁浜斿瓙杩炴垚 +} + +void Back()//鎮旀鍑芥暟 +{ + if(status[prey][prex/2])//閬垮厤鐢ㄦ埛澶氭鎮旀 + { + status[prey][prex/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex,prey); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey][prex/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex,prey); + } +} + +void Back1()//鎮旀鍑芥暟2锛屽綋杩涜浜烘満瀵规垬鏃惰皟鐢 +{ + if(status[prey1][prex1/2])//閬垮厤鐢ㄦ埛澶氭鎮 妫 + { + status[prey1][prex1/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex1,prey1); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey1][prex1/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex1,prey1); + } +} + +void ShowResult()//杈撳嚭涓嬫缁撴灉 +{ + getto(36,15); + if(count>=225) + printf("骞冲眬锛"); + if(type==0) //浜轰汉瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"鐧藉瓙鍚涙妫掑搾~~鎴樿儨浜嗛粦瀛愬悰~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"榛戝瓙鍚涙妫掑搾~~鎴樿儨浜嗙櫧瀛愬悰~~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + } + else //浜烘満瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"浜诧紝浣犵珶鐒惰緭缁欎簡鐢佃剳锛屽洖瀹舵礂娲楃潯鍚э紒%>_<%","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"浜诧紝浣犲お鍘夊浜嗭紝浣犵珶鐒跺彲浠ユ垬鑳滅數鑴戯紒\^鈼嘵/","浜斿瓙妫嬫父鎴",MB_OK); + } +} + +void save()//淇濆瓨娈嬪眬 +{ + int i,j; + char str[4]; + FILE *fp=fopen("data.txt","w");//鎵撳紑鏂囦欢锛屾妸status[i][j]銆乼ype銆乫lag銆乧ount鍐欏叆data.txt鏂囦欢 + if(fp==NULL) + { + printf("淇濆瓨娈嬪眬澶辫触"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + fputc(status[i][j]+'0',fp); + fputc(type+'0',fp); + fputc(flag+'0',fp); + itoa(count,str,10);//灏嗘暣鏁拌浆鎹㈡垚瀛楃涓诧紝骞剁粰鍑鸿繘鍒舵暟 + fputs(str,fp); + fclose(fp); +} + +void Continue() +{ + int i, j; + char str[4]; + FILE *fp=fopen("data.txt","r");//鎵撳紑鏂囦欢璇诲嚭鐩稿簲鏁版嵁 + if(fp==NULL) + { + printf("鎭㈠娈嬪眬澶辫触......"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + status[i][j]=fgetc(fp)-'0'; + type=fgetc(fp)-'0'; + flag=fgetc(fp)-'0'; + char ch=fgetc(fp); + i=0; + while(ch!=EOF) + { + str[i++]=ch; + ch=fgetc(fp); + } + str[i]='\0'; + fclose(fp); + count=atoi(str);//灏嗗瓧绗︿覆杞崲鎴愭暣鏁 + for(i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(status[i][j]==1) + WhiteChess(2*j,i); + if(status[i][j]==2) + BlackChess(2*j,i); + } +} + +void ValueJudgeAttack() //杩涙敾鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value1[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=y;i1<15;i1++)//寰涓嬫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1? k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1 ) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]== 1) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value[i][j]=3 + { //k=1,Value[i][j]=5 + case 3: //k=2, Value[i][j]=7 + Value1[i][j]=15;break; //k=3,Value[i][j]=15 + case 4: + Value1[i][j]=25;break; //k=4,Value[i][j]=25 + default: + Value1[i][j]=3+2*k;break; + } + }//end of if + }//end of second for + }//end of first for +}//end of the function + +void ValueJudgeDefend()//闃插尽鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value2[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j;i1<15;i1++)//寰涓嬫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value2[i][j]=2 + { //k=1,Value2[i][j]=4 + case 3: //k=2,Value2i][j]=6 + Value2[i][j]=10;break; //k=3,Value2[i][j]=10 + case 4: //k=4,Value2[i][j]=20 + Value2[i][j]=20;break; + default: + Value2[i][j]=2+k*2; + } + } + } + } +} + +void FindPosition()//鎵惧埌鏈鏈変环鍊肩殑浣嶇疆 +{ + int k1=0, k2=0; + int i, j, max=0; + for( i=0;i<15;i++) + for( j=0;j<15;j++) + { + if(max<=Value1[i][j]) + { + max=Value1[i][j]; + k1=i; + k2=j; + } + } + for( i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(max<=Value2[i][j]) + { + max=Value2[i][j]; + k1=i; + k2=j; + } + } + x=2*k2; //灏嗘壘鍒扮殑浣嶇疆浼犵粰鍏夋爣 + y=k1; +} + +void MantoMan() //浜轰汉妯″紡 +{ + while(1)//褰撴湁浜鸿幏鑳滐紝璺冲嚭寰幆锛岀粨鏉熸父鎴 + { + getto(36,13); //杈撳嚭褰撳墠涓嬫鏂 + showplayer(); + getto(x,y); //鍏夋爣璺冲埌妫嬬洏涓ぎ + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + Back();//璋冪敤鎮旀鍑芥暟 + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2==flag) //flag涓0鏃讹紝鐧芥鍏堜笅锛沠lag涓1鏃讹紝榛戞鍏堜笅 + { + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + else + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦鑿滃崟閫夐」 + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer1()//浜烘満妯″紡锛岀數鑴戝厛涓 +{ + x=14,y=7; + WhiteChess(x,y); //鐢佃剳鍏堜笅锛屼笖绗竴瀛愯惤鍦ㄦ鐩樹腑澶 + getto(x,y); + status[y][x/2]=1; + count++; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鈫戝厜鏍囦笂绉 + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鈫撳厜鏍囦笅绉 + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + if(count<=1) + continue; + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓0鐜╁鍚庝笅锛屼笖涓嬪畬鍚庣數鑴戞帴鐫涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + }break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer2()//浜烘満妯″紡锛岀帺瀹跺厛涓 +{ + x=14,y=7; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓1鐜╁鍏堜笅锛屼笖涓嬪畬鍚庣數鑴戝啀涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず锛",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 +} + +void GameStart()//涓嬫鍑芥暟 +{ + x=14,y=7; + getto(x,y); + if(type==0) + MantoMan(); //浜轰汉妯″紡 + else + { + if(flag==0) + MantoComputer1();//鐢佃剳鍏堟墜 + if(flag==1) + MantoComputer2();//鐜╁鍏堟墜 + } + ShowResult(); //鏄剧ず娓告垙缁撴灉 +} + +int main() +{ + FILE *fp=fopen("data.txt","r");//瀹氫箟涓涓枃浠舵寚閽堟寚鍚戞暟鎹繚瀛樻枃浠 + ChessBord();//缁樺埗妫嬬洏 + system("cls");//瀹炵幇娓呭睆 + ShowChessBoard();//杈撳嚭妫嬬洏 + char ch=fgetc(fp); + fclose(fp); + if(ch!=EOF) //鍒ゆ柇鏂囦欢鏄惁涓虹┖锛岃嫢闈炵┖鍒欒〃鏄巇ata.txt鏂囦欢閲屾湁鏁版嵁 + { + int message=MessageBox(NULL,"妫娴嬪埌鎮ㄤ笂娆′簲瀛愭杩樻病鏈変笅瀹岋紝鏄惁缁х画锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + { + fp=fopen("data.txt","w");//鑻ョ敤鎴峰彇娑堟仮澶嶆畫灞锛屽垯瀵瑰師鏁版嵁鏂囦欢杩涜鏀瑰啓瑕嗙洊锛岄伩鍏嶅娆℃彁閱掔敤鎴锋仮澶嶆畫灞 + fclose(fp); + } + if(IDOK==message) + { + Continue();//璋冪敤鎭㈠娈嬪眬鍑芥暟 + ShowMenu();//杈撳嚭鑿滃崟 + x=14,y=7; + getto(14,7); + if(type==0) //鏍规嵁瀵瑰師鏁版嵁鐨勫垽鏂紝鎭㈠娓告垙鐜板満锛屽嵆娓告垙妯″紡銆佸厛鍚庢墜闂 + { + MantoMan(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2==flag)) + { + MantoComputer1(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2!=flag)) + { + MantoComputer2(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + fp=fopen("data.txt","w");//鎭㈠娈嬪眬鍚庡簲鍙婃椂瀵瑰鍘熸暟鎹枃浠惰繘琛屾敼鍐欒鐩栵紝閬垮厤澶氭鎻愰啋鐢ㄦ埛鎭㈠娈嬪眬 + fclose(fp); + } + } + if(!Winner) + { + ShowMenu();//杈撳嚭鑿滃崟 + getto(36,3); + GameStart();//寮濮嬫父鎴*/ + } + return 0; +} \ No newline at end of file From da9cf3bb8a72322a71d961a12dddcefadee633d6 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 13:07:44 +0800 Subject: [PATCH 21/35] =?UTF-8?q?Delete=20=E4=BA=94=E5=AD=90=E6=A3=8Btxt.t?= =?UTF-8?q?xt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\344\272\224\345\255\220\346\243\213txt.txt" | 1164 ----------------- 1 file changed, 1164 deletions(-) delete mode 100644 "\344\272\224\345\255\220\346\243\213txt.txt" diff --git "a/\344\272\224\345\255\220\346\243\213txt.txt" "b/\344\272\224\345\255\220\346\243\213txt.txt" deleted file mode 100644 index 422ebcad..00000000 --- "a/\344\272\224\345\255\220\346\243\213txt.txt" +++ /dev/null @@ -1,1164 +0,0 @@ -锘#include -#include -#include//API鍑芥暟澶存枃浠 -#include//鎺у埗鍙拌緭 鍏ヨ緭鍑哄ご鏂囦欢 - -/*鐣岄潰棰滆壊瀹忓畾涔*/ -#define WhiteColor 63 -#define BlackColor 48 -#define Menu 2 -#define ChessBackground 125 -#define ChessBoardColor 48 -#define TipColor 6//缁胯壊 - -HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);//寰楀埌涓涓爣鍑嗙殑杈撳嚭鍙ユ焺 - -char Chess[15][15][3];//妫嬪瀷瀛楃鏁扮粍 - -int type=0;//璁板綍浜轰汉瀵规垬or浜烘満瀵规垬锛宼ype涓0浜轰汉瀵规垬锛宼ype涓1浜烘満瀵规垬锛岄粯璁や负浜轰汉瀵规垬 - -int flag=-1;//璁板綍榛戠櫧妫嬪摢鏂瑰厛钀藉瓙锛宖lag涓0鐧藉瓙锛堢數鑴戯級鍏堬紝flag涓1榛戝瓙锛堢帺瀹讹級鍏 - -int count=0;//璁板綍涓嬫姝ユ暟锛屼竴鍏卞彲涓225姝 - -int status[15][15]={0};//鏍囪瘑褰撳墠浣嶇疆鐘舵侊紝status[i][j]涓0琛ㄦ槑姝や綅缃负绌猴紝status[i][j]涓1琛ㄦ槑涓虹櫧妫嬶紙鐢佃剳锛夛紝status[i][j]涓2琛ㄦ槑褰撳墠浣嶇疆涓洪粦妫嬶紙鐜╁锛 - -int Winner=0;//鏍囪瘑璧㈠锛學inner=1琛ㄦ槑鐧芥锛堢數鑴戯級鑳滐紝Winner=2琛ㄦ槑榛戞锛堢帺瀹讹級鑳 - -int x=40, y=1;//琛ㄧず褰撳墠榧犳爣鐨勪綅缃 - -int prex=0, prey=0;//璁板綍褰撳墠妫嬫墜涓嬫浣嶇疆锛岀敤浜庢倲妫嬪嚱鏁 - -int prex1=0, prey1=0;//璁板綍妫嬫墜涓婁竴姝ヤ笅妫嬬殑浣嶇疆锛岀敤浜庣數鑴戞倲妫嬪弬鏁 - -int Value1[15][15]={0};//鏀诲嚮鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 - -int Value2[15][15]={0};//闃插畧鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 - -void GameStart();//涓嬫鍑芥暟 - -void TextColor(int color)//璁剧疆棰滆壊鍑芥暟 -{ - SetConsoleTextAttribute(hOutput,color);//璁剧疆鎺у埗鍙版枃鏈睘鎬 -} - -void ChessBord()//缁樺埗妫嬬洏褰㈢姸 -{ - int i, j; - strcpy(Chess[0][0],"鈹");//璁剧疆妫嬬洏鍥涜 - strcpy(Chess[14][0],"鈹"); - strcpy(Chess[0][14],"鈹"); - strcpy(Chess[14][14],"鈹"); - for(i=1;i<14;i++) - { - strcpy(Chess[i][0],"鈹"); - strcpy(Chess[i][14],"鈹"); - } - for(j=1;j<14;j++) - { - strcpy(Chess[0][j],"鈹"); - strcpy(Chess[14][j],"鈹"); - } - for(i=1;i<14;i++) - for(j=1;j<14;j++) - strcpy(Chess[i][j],"鈹"); -} - -void ShowChessBoard()//杈撳嚭妫嬬洏褰㈢姸 -{ - for(int i=0;i<15;i++) - { - for(int j=0;j<15;j++) - { - TextColor(ChessBoardColor);//妫嬬洏棰滆壊 - printf("%s",Chess[i][j]); - //printf(" "); // win10鐜闇瑕佹坊鍔犺璇彞锛屽惁鍒欑晫闈㈡樉绀烘湁闂 - } - printf("\n"); - } -} - -void getto(int x,int y)//鍏夋爣鍑芥暟 -{ - COORD cursor={0,0};//瀹氫箟涓涓厜鏍囧璞 - cursor.X=x; - cursor.Y=y; - SetConsoleCursorPosition(hOutput,cursor);//璁剧疆鍏夋爣浣嶇疆 -} - -void ChooseFirst() //鍏堟墜鍑芥暟锛岀‘瀹氫汉浜/鏈烘ā寮忎互鍙婂厛鍚庢墜 -{ - switch(y) - { - case 3: - { - TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 - x=50,y=3;getto(x,y); - printf("1.鐧藉瓙鍏堟墜"); - getto(x,y+2); - printf("2.榛戝瓙鍏堟墜"); - getto(x,y); - while(1) - { - switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 - { - case '1': - flag=0;break; - case '2': - flag=1;break; - case 72:if(y<=3)y=3;else y-=2;getto(x,y);break;//涓 - case 80:if(y>=5)y=5;else y+=2;getto(x,y);break;//涓 - case 13:if(y==3) flag=0;else flag=1; break;//flag=0 鐧藉瓙鍏堟墜 flag=1 榛戝瓙鍏堟墜 - case 'e':case 'E':case 27: - { - int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - continue; - if(IDOK==message) - { - getto(36,15); - exit(0); - } - }break;//鎻愬墠缁堟姣旇禌 - default:break; - } - if(flag!=-1) - break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 - } - }break; - case 5: - { - type=1; //浜烘満瀵规垬妯″紡 - TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 - x=50,y=3;getto(x,y); - printf("1.鐢佃剳鍏堟墜"); - getto(x,y+2); - printf("2.鐜╁鍏堟墜"); - getto(x,y); - while(1) - { - switch(getch()) - { - case '1': - flag=0;break; - case '2': - flag=1;break; - case 72:if(y<=3)y=3;else y-=2;getto(x,y);break; - case 80:if(y>=5)y=5;else y+=2;getto(x,y);break; - case 13:if(y==3) flag=0;else flag=1;break; //flag=0 鐢佃剳鍏堟墜 flag=1 鐜╁鍏堟墜 - case 'e':case 'E': - { - int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - continue; - if(IDOK==message) - { - getto(36,15); - exit(0); - } - }break;//鎻愬墠缁堟姣旇禌 - default:break; - } - if(flag!=-1) - break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 - } - }break; - default: - break; - } -} - -void ShowMenu()//杈撳嚭鑿滃崟閫夐」锛岀敤鎴峰彲瑙嗗寲鐣岄潰 -{ - getto(40,1); - TextColor(Menu); - printf("娆㈣繋浣跨敤浜斿瓙妫"); - getto(36,3); - printf("1.浜轰汉瀵规垬"); - getto(36,5); - printf("2.浜烘満瀵规垬"); - getto(36,7); - printf("B鎮旀(鎸夊揩鎹烽敭B鍗冲彲瀹炶鎮旀)"); - getto(36,9); - printf("E閫鍑(鎸夊揩鎹烽敭E鍗冲彲瀹炶閫鍑)"); - getto(36,11); - printf("R閲嶆柊寮濮(鎸夊揩鎹烽敭R鍗冲彲瀹炶閲嶆柊寮濮)"); - getto(0,16); - printf(" 鎿嶄綔璇存槑锛歕n\n"); - printf("1.鐢ㄦ埛搴斿厛閫夋嫨娓告垙妯″紡锛屽彲浠ユ寜蹇嵎閿'1'銆'2'杩涜閫夋嫨锛屼篃鍙氳繃绉诲姩鍏夋爣瀹炵幇\n\n2.纭畾涓嬫浣嶇疆鍙寜鈫戙佲啌銆佲啇銆佲啋涓姝ユ绉诲姩鍏夋爣,涔熷彲鎸'W'锛堝揩閫熷埌鍒楅锛夈'S'锛堝揩閫熷埌鍒楀熬锛夈'A'锛堝揩閫熷埌琛岄锛夈'D'锛堝揩閫熷埌琛屽熬锛塡n\n3.鎸塭nter纭畾钀藉瓙锛屽悓鏃舵湰娓告垙鎻愪緵鐩稿簲蹇嵎閿搷浣滐紙璇﹁妫嬬洏鍙充晶锛"); - x=36,y=3; - getto(x,y); - while(1) - { - if(flag!=-1) - break; - switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 - { - case '1': - { - ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 - }break; - case '2': - { - y=5; - ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 - }break; - case 72: - { - if(y<=3)y=3;else y-=2;//鎺у埗鍏夋爣涓嶄笂瓒呯涓夎 - getto(x,y); - }break; - case 80: - { if(y>=5)y=5;else y+=2;//鎺у埗鍏夋爣涓嶄笅瓒呯浜旇 - getto(x,y); - }break; - case 13: - { - ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 - }break; - case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 - { - int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - continue; - if(IDOK==message) - {getto(36,15);exit(0);} - }break;//鎻愬墠缁堟姣旇禌 - default: - break; - } - - }//while缁撴潫锛屽緱鍒扮敤鎴风殑閫夋嫨缁撴灉锛屽嵆浣曟柟鍏堜笅 -} - -void showplayer()//鏄剧ず鍝柟鎵у瓙 -{ - - TextColor(TipColor); - if(type==0)//浜轰汉妯″紡 - { - if(count%2==flag) - printf("鐧藉瓙鎵ф墜"); - else - printf("榛戝瓙鎵ф墜"); - } - else //浜烘満妯″紡 - { - if(count%2==flag) - printf("鐢佃剳鎵ф墜"); - else - printf("鐜╁鎵ф墜"); - } -} - -void WhiteChess(int x,int y)//杈撳嚭鐧芥瀛 -{ - getto(x,y); - TextColor(WhiteColor); - printf("鈼"); - prex1=prex; - prey1=prey; - prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 - prey=y; -} - -void BlackChess(int x,int y)//杈撳嚭榛戞瀛 -{ - getto(x,y); - TextColor(BlackColor); - printf("鈼"); - prex1=prex; - prey1=prey; - prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 - prey=y; -} - -int ResultCheck(int x,int y,int player) //鍒ゆ柇鏄惁鏈変汉鑳滃埄锛岃嫢鏈変汉鑾疯儨鍒欒繑鍥瀙layer,鍙嶄箣杩斿洖0 -{ - int n1, n2; - int i, j; - n1=n2=0; - for(i=x,j=y;j>=0;j--)//寰宸︽暟 - { - if(status[i][j]==player) - n1++; - else - break; - } - for(i=x,j=y+1;j<15;j++)//寰鍙虫暟 - { - if(status[i][j]==player) - n2++; - else - break; - } - if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 - return player; - n1=n2=0; - for(i=x,j=y;i>=0;i--)//寰涓婃暟 - { - if(status[i][j]==player) - n1++; - else - break; - } - for(i=x+1,j=y;i<15;i++)//寰涓嬫暟 - { - if(status[i][j]==player) - n2++; - else - break; - } - if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 - return player; - n1=n2=0; - for(i=x,j=y;i>=0&&j>=0;i--,j--)//寰宸︿笂鏁 - { - if(status[i][j]==player) - n1++; - else - break; - } - for(i=x+1,j=y+1;i<15&&j<15;i++,j++)//寰鍙充笅鏁 - { - if(status[i][j]==player) - n2++; - else - break; - } - if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 - return player; - n1=n2=0; - for(i=x,j=y;i<15&&j>=0;i++,j--)//寰宸︿笅鏁 - { - if(status[i][j]==player) - n1++; - else - break; - } - for(i=x-1,j=y+1;i>=0&&j<15;i--,j++)//寰鍙充笂鏁 - { - if(status[i][j]==player) - n2++; - else - break; - } - if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 - return player; - return 0; //鏈湁浜斿瓙杩炴垚 -} - -void Back()//鎮旀鍑芥暟 -{ - if(status[prey][prex/2])//閬垮厤鐢ㄦ埛澶氭鎮旀 - { - status[prey][prex/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 - getto(prex,prey); - TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 - printf("%s",Chess[prey][prex/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 - count--;//涓嬫姝ユ暟鑷噺 - getto(prex,prey); - } -} - -void Back1()//鎮旀鍑芥暟2锛屽綋杩涜浜烘満瀵规垬鏃惰皟鐢 -{ - if(status[prey1][prex1/2])//閬垮厤鐢ㄦ埛澶氭鎮 妫 - { - status[prey1][prex1/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 - getto(prex1,prey1); - TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 - printf("%s",Chess[prey1][prex1/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 - count--;//涓嬫姝ユ暟鑷噺 - getto(prex1,prey1); - } -} - -void ShowResult()//杈撳嚭涓嬫缁撴灉 -{ - getto(36,15); - if(count>=225) - printf("骞冲眬锛"); - if(type==0) //浜轰汉瀵规垬妯″紡 - { - if(Winner==1) - MessageBox(NULL,"鐧藉瓙鍚涙妫掑搾~~鎴樿儨浜嗛粦瀛愬悰~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); - if(Winner==2) - MessageBox(NULL,"榛戝瓙鍚涙妫掑搾~~鎴樿儨浜嗙櫧瀛愬悰~~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); - } - else //浜烘満瀵规垬妯″紡 - { - if(Winner==1) - MessageBox(NULL,"浜诧紝浣犵珶鐒惰緭缁欎簡鐢佃剳锛屽洖瀹舵礂娲楃潯鍚э紒%>_<%","浜斿瓙妫嬫父鎴",MB_OK); - if(Winner==2) - MessageBox(NULL,"浜诧紝浣犲お鍘夊浜嗭紝浣犵珶鐒跺彲浠ユ垬鑳滅數鑴戯紒\^鈼嘵/","浜斿瓙妫嬫父鎴",MB_OK); - } -} - -void save()//淇濆瓨娈嬪眬 -{ - int i,j; - char str[4]; - FILE *fp=fopen("data.txt","w");//鎵撳紑鏂囦欢锛屾妸status[i][j]銆乼ype銆乫lag銆乧ount鍐欏叆data.txt鏂囦欢 - if(fp==NULL) - { - printf("淇濆瓨娈嬪眬澶辫触"); - } - for(i=0;i<15;i++) - for(j=0;j<15;j++) - fputc(status[i][j]+'0',fp); - fputc(type+'0',fp); - fputc(flag+'0',fp); - itoa(count,str,10);//灏嗘暣鏁拌浆鎹㈡垚瀛楃涓诧紝骞剁粰鍑鸿繘鍒舵暟 - fputs(str,fp); - fclose(fp); -} - -void Continue() -{ - int i, j; - char str[4]; - FILE *fp=fopen("data.txt","r");//鎵撳紑鏂囦欢璇诲嚭鐩稿簲鏁版嵁 - if(fp==NULL) - { - printf("鎭㈠娈嬪眬澶辫触......"); - } - for(i=0;i<15;i++) - for(j=0;j<15;j++) - status[i][j]=fgetc(fp)-'0'; - type=fgetc(fp)-'0'; - flag=fgetc(fp)-'0'; - char ch=fgetc(fp); - i=0; - while(ch!=EOF) - { - str[i++]=ch; - ch=fgetc(fp); - } - str[i]='\0'; - fclose(fp); - count=atoi(str);//灏嗗瓧绗︿覆杞崲鎴愭暣鏁 - for(i=0;i<15;i++) - for(j=0;j<15;j++) - { - if(status[i][j]==1) - WhiteChess(2*j,i); - if(status[i][j]==2) - BlackChess(2*j,i); - } -} - -void ValueJudgeAttack() //杩涙敾鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 -{ - int i1, j1; - int k1,k2,k; - for(int i=0;i<15;i++) - { - for(int j=0;j<15;j++) - { - if(status[i][j]) - Value1[i][j]=0; - if(status[i][j]==0) - { - k1=k2=0; - for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐢佃剳妫嬪瓙鏁 - { - if(status[i1][j1]==1) - k1++; - else - break; - } - for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐢佃剳妫嬪瓙鏁 - { - if(status[i1][j1]==1) - k2++; - else - break; - } - k=k1>k2? k1:k2; - k1=k2=0; - for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐢佃剳妫嬪瓙鏁 - { - if(status[i1][j1]==1) - k1++; - else - break; - } - for(i1=i+1,j1=y;i1<15;i1++)//寰涓嬫暟瀵绘壘鐢佃剳妫嬪瓙鏁 - { - if(status[i1][j1]==1) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1? k:k1; - k1=k2=0; - for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧數鑴戞瀛愭暟 - { - if(status[i1][j1]==1) - k1++; - else - break; - } - for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧數鑴戞瀛愭暟 - { - if(status[i1][j1]==1 ) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1?k:k1; - k1=k2=0; - for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧數鑴戞瀛愭暟 - { - if(status[i1][j1]== 1) - k1++; - else - break; - } - for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧數鑴戞瀛愭暟 - { - if(status[i1][j1]==1) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1?k:k1; - switch(k) //k=0,Value[i][j]=3 - { //k=1,Value[i][j]=5 - case 3: //k=2, Value[i][j]=7 - Value1[i][j]=15;break; //k=3,Value[i][j]=15 - case 4: - Value1[i][j]=25;break; //k=4,Value[i][j]=25 - default: - Value1[i][j]=3+2*k;break; - } - }//end of if - }//end of second for - }//end of first for -}//end of the function - -void ValueJudgeDefend()//闃插尽鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 -{ - int i1, j1; - int k1,k2,k; - for(int i=0;i<15;i++) - { - for(int j=0;j<15;j++) - { - if(status[i][j]) - Value2[i][j]=0; - if(status[i][j]==0) - { - k1=k2=0; - for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐜╁妫嬪瓙鏁 - { - if(status[i1][j1]==2) - k1++; - else - break; - } - for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐜╁妫嬪瓙鏁 - { - if(status[i1][j1]==2) - k2++; - else - break; - } - k=k1>k2? k1:k2; - k1=k2=0; - for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐜╁妫嬪瓙鏁 - { - if(status[i1][j1]==2) - k1++; - else - break; - } - for(i1=i+1,j1=j;i1<15;i1++)//寰涓嬫暟瀵绘壘鐜╁妫嬪瓙鏁 - { - if(status[i1][j1]==2) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1?k:k1; - k1=k2=0; - for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧帺瀹舵瀛愭暟 - { - if(status[i1][j1]==2) - k1++; - else - break; - } - for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧帺瀹舵瀛愭暟 - { - if(status[i1][j1]==2) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1?k:k1; - k1=k2=0; - for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧帺瀹舵瀛愭暟 - { - if(status[i1][j1]==2) - k1++; - else - break; - } - for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧帺瀹舵瀛愭暟 - { - if(status[i1][j1]==2) - k2++; - else - break; - } - k1=k1>k2? k1:k2; - k=k>k1?k:k1; - switch(k) //k=0,Value2[i][j]=2 - { //k=1,Value2[i][j]=4 - case 3: //k=2,Value2i][j]=6 - Value2[i][j]=10;break; //k=3,Value2[i][j]=10 - case 4: //k=4,Value2[i][j]=20 - Value2[i][j]=20;break; - default: - Value2[i][j]=2+k*2; - } - } - } - } -} - -void FindPosition()//鎵惧埌鏈鏈変环鍊肩殑浣嶇疆 -{ - int k1=0, k2=0; - int i, j, max=0; - for( i=0;i<15;i++) - for( j=0;j<15;j++) - { - if(max<=Value1[i][j]) - { - max=Value1[i][j]; - k1=i; - k2=j; - } - } - for( i=0;i<15;i++) - for(j=0;j<15;j++) - { - if(max<=Value2[i][j]) - { - max=Value2[i][j]; - k1=i; - k2=j; - } - } - x=2*k2; //灏嗘壘鍒扮殑浣嶇疆浼犵粰鍏夋爣 - y=k1; -} - -void MantoMan() //浜轰汉妯″紡 -{ - while(1)//褰撴湁浜鸿幏鑳滐紝璺冲嚭寰幆锛岀粨鏉熸父鎴 - { - getto(36,13); //杈撳嚭褰撳墠涓嬫鏂 - showplayer(); - getto(x,y); //鍏夋爣璺冲埌妫嬬洏涓ぎ - switch(getch()) - { - case 72: //鍏夋爣涓婄Щ - { - if(y>0) - y-=1; - getto(x,y); - }break; - case 80: //鍏夋爣涓嬬Щ - { - if(y<14) - y+=1; - getto(x,y); - }break; - case 75: //鍏夋爣宸︾Щ - { - if(x>=2) - x-=2; - getto(x,y); - }break; - case 77: //鍏夋爣鍙崇Щ - { - if(x<28) - x+=2; - getto(x,y); - }break; - case 'A':case 'a': //鍏夋爣绉诲埌琛岄 - { - x=0; - getto(x,y); - }break; - case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 - { - x=28; - getto(x,y); - }break; - case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 - { - y=0; - getto(x,y); - }break; - case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 - { - y=14; - getto(x,y); - }break; - case 'b':case 'B': //鎮旀 - { - int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - Back();//璋冪敤鎮旀鍑芥暟 - }break; - case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 - { - if(count%2==flag) //flag涓0鏃讹紝鐧芥鍏堜笅锛沠lag涓1鏃讹紝榛戞鍏堜笅 - { - if(status[y][x/2]==0) - { - WhiteChess(x,y); - getto(x,y); - status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 - count++; - Winner=ResultCheck(y,x/2,1); - } - } - else - { - if(status[y][x/2]==0) - { - BlackChess(x,y); - getto(x,y); - status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 - count++; - Winner=ResultCheck(y,x/2,2); - } - } - }break; - case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 - { - int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - { - for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ - for(int j=0;j<15;j++) - status[i][j]=0; - flag=-1; - type=0; - count=0; - Winner=0; - getto(0,0); - system("cls"); - ChessBord(); - ShowChessBoard(); - ShowMenu(); - getto(36,3);//鍏夋爣绉昏嚦鑿滃崟閫夐」 - GameStart(); - } - }break; - case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 - { - int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); - if(IDYES==message) - { - save(); - MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - if(IDCANCEL==message) - MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); - if(IDNO==message) - { - MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - };break; - default: - break; - - } - if(count>=225) - break; - if(Winner) - break; - }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 - } - -void MantoComputer1()//浜烘満妯″紡锛岀數鑴戝厛涓 -{ - x=14,y=7; - WhiteChess(x,y); //鐢佃剳鍏堜笅锛屼笖绗竴瀛愯惤鍦ㄦ鐩樹腑澶 - getto(x,y); - status[y][x/2]=1; - count++; - while(1) - { - getto(36,13); - showplayer(); - getto(x,y); - switch(getch()) - { - case 72: //鈫戝厜鏍囦笂绉 - { - if(y>0) - y-=1; - getto(x,y); - }break; - case 80: //鈫撳厜鏍囦笅绉 - { - if(y<14) - y+=1; - getto(x,y); - }break; - case 75: //鍏夋爣宸︾Щ - { - if(x>=2) - x-=2; - getto(x,y); - }break; - case 77: //鍏夋爣鍙崇Щ - { - if(x<28) - x+=2; - getto(x,y); - }break; - case 'A':case 'a': //鍏夋爣绉诲埌琛岄 - { - x=0; - getto(x,y); - }break; - case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 - { - x=28; - getto(x,y); - }break; - case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 - { - y=0; - getto(x,y); - }break; - case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 - { - y=14; - getto(x,y); - }break; - case 'b':case 'B': //鎮旀 - { - if(count<=1) - continue; - int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - { - Back(); //璋冪敤鎮旀鍑芥暟 - Back1(); //璋冪敤鎮旀鍑芥暟 - } - }break; - case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 - { - if(count%2!=flag) //flag涓0鐜╁鍚庝笅锛屼笖涓嬪畬鍚庣數鑴戞帴鐫涓 - { - if(status[y][x/2]==0) - { - BlackChess(x,y); - getto(x,y); - status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 - count++; - Winner=ResultCheck(y,x/2,2); - if(Winner==2) - break; - ValueJudgeAttack(); - ValueJudgeDefend(); - FindPosition(); - if(status[y][x/2]==0) - { - WhiteChess(x,y); - getto(x,y); - status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 - count++; - Winner=ResultCheck(y,x/2,1); - } - } - } - }break; - case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 - { - int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - { - for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ - for(int j=0;j<15;j++) - status[i][j]=0; - flag=-1; - type=0; - count=0; - Winner=0; - getto(0,0); - system("cls"); - ChessBord(); - ShowChessBoard(); - ShowMenu(); - getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ - GameStart(); - } - }break; - case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 - { - int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); - if(IDYES==message) - { - save(); - MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - if(IDCANCEL==message) - MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); - if(IDNO==message) - { - MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - }break; - default: - break; - - } - if(count>=225) - break; - if(Winner) - break; - }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 - } - -void MantoComputer2()//浜烘満妯″紡锛岀帺瀹跺厛涓 -{ - x=14,y=7; - while(1) - { - getto(36,13); - showplayer(); - getto(x,y); - switch(getch()) - { - case 72: //鍏夋爣涓婄Щ - { - if(y>0) - y-=1; - getto(x,y); - }break; - case 80: //鍏夋爣涓嬬Щ - { - if(y<14) - y+=1; - getto(x,y); - }break; - case 75: //鍏夋爣宸︾Щ - { - if(x>=2) - x-=2; - getto(x,y); - }break; - case 77: //鍏夋爣鍙崇Щ - { - if(x<28) - x+=2; - getto(x,y); - }break; - case 'A':case 'a': //鍏夋爣绉诲埌琛岄 - { - x=0; - getto(x,y); - }break; - case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 - { - x=28; - getto(x,y); - }break; - case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 - { - y=0; - getto(x,y); - }break; - case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 - { - y=14; - getto(x,y); - }break; - case 'b':case 'B': //鎮旀 - { - int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - { - Back(); //璋冪敤鎮旀鍑芥暟 - Back1(); //璋冪敤鎮旀鍑芥暟 - } - }break; - case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 - { - if(count%2!=flag) //flag涓1鐜╁鍏堜笅锛屼笖涓嬪畬鍚庣數鑴戝啀涓 - { - if(status[y][x/2]==0) - { - BlackChess(x,y); - getto(x,y); - status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 - count++; - Winner=ResultCheck(y,x/2,2); - if(Winner==2) - break; - ValueJudgeAttack(); - ValueJudgeDefend(); - FindPosition(); - if(status[y][x/2]==0) - { - WhiteChess(x,y); - getto(x,y); - status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 - count++; - Winner=ResultCheck(y,x/2,1); - } - } - } - }break; - case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 - { - int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず锛",MB_OKCANCEL); - if(IDCANCEL==message) - break; - if(IDOK==message) - { - for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ - for(int j=0;j<15;j++) - status[i][j]=0; - flag=-1; - type=0; - count=0; - Winner=0; - getto(0,0); - system("cls"); - ChessBord(); - ShowChessBoard(); - ShowMenu(); - getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ - GameStart(); - } - }break; - case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 - { - int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); - if(IDYES==message) - { - save(); - MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - if(IDCANCEL==message) - MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); - if(IDNO==message) - { - MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); - getto(36,15); - exit(0); - } - };break; - default: - break; - - } - if(count>=225) - break; - if(Winner) - break; - }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 -} - -void GameStart()//涓嬫鍑芥暟 -{ - x=14,y=7; - getto(x,y); - if(type==0) - MantoMan(); //浜轰汉妯″紡 - else - { - if(flag==0) - MantoComputer1();//鐢佃剳鍏堟墜 - if(flag==1) - MantoComputer2();//鐜╁鍏堟墜 - } - ShowResult(); //鏄剧ず娓告垙缁撴灉 -} - -int main() -{ - FILE *fp=fopen("data.txt","r");//瀹氫箟涓涓枃浠舵寚閽堟寚鍚戞暟鎹繚瀛樻枃浠 - ChessBord();//缁樺埗妫嬬洏 - system("cls");//瀹炵幇娓呭睆 - ShowChessBoard();//杈撳嚭妫嬬洏 - char ch=fgetc(fp); - fclose(fp); - if(ch!=EOF) //鍒ゆ柇鏂囦欢鏄惁涓虹┖锛岃嫢闈炵┖鍒欒〃鏄巇ata.txt鏂囦欢閲屾湁鏁版嵁 - { - int message=MessageBox(NULL,"妫娴嬪埌鎮ㄤ笂娆′簲瀛愭杩樻病鏈変笅瀹岋紝鏄惁缁х画锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); - if(IDCANCEL==message) - { - fp=fopen("data.txt","w");//鑻ョ敤鎴峰彇娑堟仮澶嶆畫灞锛屽垯瀵瑰師鏁版嵁鏂囦欢杩涜鏀瑰啓瑕嗙洊锛岄伩鍏嶅娆℃彁閱掔敤鎴锋仮澶嶆畫灞 - fclose(fp); - } - if(IDOK==message) - { - Continue();//璋冪敤鎭㈠娈嬪眬鍑芥暟 - ShowMenu();//杈撳嚭鑿滃崟 - x=14,y=7; - getto(14,7); - if(type==0) //鏍规嵁瀵瑰師鏁版嵁鐨勫垽鏂紝鎭㈠娓告垙鐜板満锛屽嵆娓告垙妯″紡銆佸厛鍚庢墜闂 - { - MantoMan(); - ShowResult(); //鏄剧ず娓告垙缁撴灉 - } - if(type==1&&(count%2==flag)) - { - MantoComputer1(); - ShowResult(); //鏄剧ず娓告垙缁撴灉 - } - if(type==1&&(count%2!=flag)) - { - MantoComputer2(); - ShowResult(); //鏄剧ず娓告垙缁撴灉 - } - fp=fopen("data.txt","w");//鎭㈠娈嬪眬鍚庡簲鍙婃椂瀵瑰鍘熸暟鎹枃浠惰繘琛屾敼鍐欒鐩栵紝閬垮厤澶氭鎻愰啋鐢ㄦ埛鎭㈠娈嬪眬 - fclose(fp); - } - } - if(!Winner) - { - ShowMenu();//杈撳嚭鑿滃崟 - getto(36,3); - GameStart();//寮濮嬫父鎴*/ - } - return 0; -} \ No newline at end of file From fbcfb3e5c0f550d18b2d7507ff88d9d6d2a8dc51 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 13:07:56 +0800 Subject: [PATCH 22/35] Delete thoughts of WUZIQI.txt --- thoughts of WUZIQI.txt | 41 ----------------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 thoughts of WUZIQI.txt diff --git a/thoughts of WUZIQI.txt b/thoughts of WUZIQI.txt deleted file mode 100644 index 2d33aa56..00000000 --- a/thoughts of WUZIQI.txt +++ /dev/null @@ -1,41 +0,0 @@ -todolist锛 -1.build the map; -2.realize the choosing position -3.computer choose position -4.judge the winner. -5.computer choose better -details: -1.mouse choose? consele choose? -some information: -绗竴澶ц剳: 钀藉瓙閫夋嫨鍣 -AlphaGo鐨勭涓涓缁忕綉缁滃ぇ鑴戞槸鈥滅洃鐫e涔犵殑绛栫暐缃戠粶(Policy Network)鈥 锛 -瑙傚療妫嬬洏甯冨眬浼佸浘鎵惧埌鏈浣崇殑涓嬩竴姝ャ -浜嬪疄涓婏紝瀹冮娴嬫瘡涓涓悎娉曚笅涓姝ョ殑鏈浣虫鐜囷紝閭d箞鏈鍓嶉潰鐚滄祴鐨勫氨鏄偅涓鐜囨渶楂樼殑銆 -浣犲彲浠ョ悊瑙f垚鈥滆惤瀛愰夋嫨鍣ㄢ濄 -AlphaGo绯荤粺浜嬪疄涓婇渶瑕佷袱涓澶栬惤瀛愰夋嫨鍣ㄧ殑澶ц剳銆 -涓涓槸鈥滃己鍖栧涔犵殑绛栫暐缃戠粶锛圥olicy Network锛夆濓紝閫氳繃鐧句竾绾ч澶栫殑妯℃嫙灞鏉ュ畬鎴愩 -浣犲彲浠ョО涔嬩负鏇村己鐨勩 -姣旇捣鍩烘湰鐨勮缁冿紝鍙槸鏁欑綉缁滃幓妯′豢鍗曚竴浜虹被鐨勮惤瀛愶紝楂樼骇鐨勮缁冧細涓庢瘡涓涓ā鎷熸灞涓嬪埌搴曪紝鏁欑綉缁滄渶鍙兘璧㈢殑涓嬩竴鎵嬨 -Sliver鍥㈤槦閫氳繃鏇村己鐨勮惤瀛愰夋嫨鍣ㄦ荤粨浜嗙櫨涓囩骇璁粌妫嬪眬锛屾瘮浠栦滑涔嬪墠鐗堟湰鍙堣凯浠d簡涓嶅皯銆 -鍗曞崟鐢ㄨ繖绉嶈惤瀛愰夋嫨鍣ㄥ氨宸茬粡鏄己澶х殑瀵规墜浜嗭紝鍙互鍒颁笟浣欐鎵嬬殑姘村钩锛屾垨鑰呰璺熶箣鍓嶆渶寮虹殑鍥存AI濯茬編銆 -杩欓噷閲嶇偣鏄繖绉嶈惤瀛愰夋嫨鍣ㄤ笉浼氬幓鈥滆鈥濄傚畠灏辨槸绠鍗曞瑙嗕粠鍗曚竴妫嬬洏浣嶇疆锛屽啀鎻愬嚭浠庨偅涓綅缃垎鏋愬嚭鏉ョ殑钀藉瓙銆 -瀹冧笉浼氬幓妯℃嫙浠讳綍鏈潵鐨勮蛋娉曘傝繖灞曠ず浜嗙畝鍗曠殑娣卞害绁炵粡缃戠粶瀛︿範鐨勫姏閲忋 -绗簩澶ц剳锛氭灞璇勪及鍣 锛圥osition Evaluator锛 -AlphaGo鐨勭浜屼釜澶ц剳鐩稿浜庤惤瀛愰夋嫨鍣ㄦ槸鍥炵瓟鍙︿竴涓棶棰樸 -涓嶆槸鍘荤寽娴嬪叿浣撲笅涓姝ワ紝瀹冮娴嬫瘡涓涓鎵嬭耽妫嬬殑鍙兘锛屽湪缁欏畾妫嬪瓙浣嶇疆鎯呭喌涓嬨 -杩欌滃眬闈㈣瘎浼板櫒鈥濆氨鏄鏂囦腑鎻愬埌鐨勨滀环鍊肩綉缁滐紙Value Network)鈥濓紝閫氳繃鏁翠綋灞闈㈠垽鏂潵杈呭姪钀藉瓙閫夋嫨鍣ㄣ -杩欎釜鍒ゆ柇浠呬粎鏄ぇ姒傜殑锛屼絾瀵逛簬闃呰閫熷害鎻愰珮寰堟湁甯姪銆 -閫氳繃鍒嗙被娼滃湪鐨勬湭鏉ュ眬闈㈢殑鈥滃ソ鈥濅笌鈥滃潖鈥濓紝AlphaGo鑳藉鍐冲畾鏄惁閫氳繃鐗规畩鍙樼鍘绘繁鍏ラ槄璇汇 -濡傛灉灞闈㈣瘎浼板櫒璇磋繖涓壒娈婂彉绉嶄笉琛岋紝閭d箞AI灏辫烦杩囬槄璇诲湪杩欎竴鏉$嚎涓婄殑浠讳綍鏇村钀藉瓙銆 -钂欑壒鍗℃礇鏍戞悳绱㈢畻娉 -濡傛灉鎷ユ湁鏃犻檺鐨勮绠楄兘鍔涳紝MCTS鍙互鐞嗚涓婂幓璁$畻鏈浣宠惤瀛愰氳繃鎺㈢储姣忎竴灞鐨勫彲鑳芥楠ゃ -浣嗘湭鏉ヨ蛋娉曠殑鎼滅储绌洪棿瀵逛簬鍥存鏉ヨ澶ぇ浜嗭紙澶у埌姣旀垜浠鐭ュ畤瀹欓噷鐨勭矑瀛愯繕澶氾級锛屽疄闄呬笂AI娌℃湁鍔炴硶鎺㈢储姣忎竴涓彲鑳界殑鍙樼銆 -MCTS鍋氭硶姣斿叾浠朅I鏈夊濂界殑鍘熷洜鏄湪璇嗗埆鏈夊埄鐨勫彉绉嶏紝杩欐牱鍙互璺宠繃涓浜涗笉鍒╃殑銆 -Silver鍥㈤槦璁〢lphaGo瑁呬笂MCTS绯荤粺鐨勬ā鍧楋紝杩欑妗嗘灦璁╄璁¤呭幓宓屽叆涓嶅悓鐨勫姛鑳藉幓璇勪及鍙樼銆 -鏈鍚庨┈鍔涘叏寮鐨凙lphaGo绯荤粺鎸夊涓嬫柟寮忎娇鐢ㄤ簡鎵鏈夎繖浜涘ぇ鑴戙 -1. 浠庡綋鍓嶇殑妫嬬洏甯冨眬锛岄夋嫨鍝簺涓嬩竴姝ョ殑鍙兘鎬с -浠栦滑鐢ㄥ熀纭鐨勮惤瀛愰夋嫨鍣ㄥぇ鑴戯紙浠栦滑灏濊瘯浣跨敤鏇村己鐨勭増鏈紝浣嗕簨瀹炰笂璁〢lphaGo鏇村急锛屽洜涓鸿繖娌℃湁璁㎝CTS鎻愪緵鏇村箍闃旂殑閫夋嫨绌洪棿锛夈 -瀹冮泦涓湪鈥滄槑鏄炬渶濂解濈殑钀藉瓙鑰屼笉鏄槄璇诲緢澶氾紝鑰屼笉鏄啀鍘婚夋嫨涔熻瀵瑰悗鏉ユ湁鍒╃殑涓嬫硶銆 -2. 瀵逛簬姣忎竴涓彲鑳界殑钀藉瓙锛岃瘎浼拌川閲忔湁涓ょ鏂瑰紡锛氳涔堢敤妫嬬洏涓婂眬闈㈣瘎浼板櫒鍦ㄨ惤瀛愬悗锛岃涔堣繍琛屾洿娣卞叆钂欑壒鍗$綏妯℃嫙鍣紙婊氬姩锛夊幓鎬濊冩湭鏉ョ殑钀藉瓙锛屼娇鐢ㄥ揩閫熼槄璇荤殑钀藉瓙閫夋嫨鍣ㄥ幓鎻愰珮鎼滅储閫熷害銆 -AlphaGo浣跨敤绠鍗曞弬鏁帮紝鈥滄贩鍚堢浉鍏崇郴鏁扳濓紝灏嗘瘡涓涓寽娴嬪彇鏉冮噸銆 -鏈澶ч┈鍔涚殑AlphaGo浣跨敤 50/50鐨勬贩鍚堟瘮锛屼娇鐢ㄥ眬闈㈣瘎浼板櫒鍜屾ā鎷熷寲婊氬姩鍘诲仛骞宠 鍒ゆ柇銆 \ No newline at end of file From d3243b11f62dfda37030ac29b33fa7e00077f664 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 13:13:14 +0800 Subject: [PATCH 23/35] Add files via upload --- .../\351\223\276\350\241\250.txt" | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 "level1/p11_linkedList/\351\223\276\350\241\250.txt" diff --git "a/level1/p11_linkedList/\351\223\276\350\241\250.txt" "b/level1/p11_linkedList/\351\223\276\350\241\250.txt" new file mode 100644 index 00000000..c9ebf732 --- /dev/null +++ "b/level1/p11_linkedList/\351\223\276\350\241\250.txt" @@ -0,0 +1,108 @@ +锘#include +#include +#include + + +#define MAXN 20 +#define MAXNUM 10 +#define LEN sizeof(struct LinkNode) + +struct LinkNode +{ + int Value; + struct LinkNode *Next; +}*Head, *Tail; + +int Rand_Get(int Rand_Min, int Rand_Max) +{ + return rand() % (Rand_Max - Rand_Min + 1) + Rand_Min; +} + +int Get_Num() +{ + if (Rand_Get(1, 4) == 1)return 5; + return Rand_Get(1, MAXNUM); +} + +void AddNode(int _val) +{ + struct LinkNode *node_new; + node_new = (struct LinkNode *)malloc(LEN); + node_new->Value = _val; + node_new->Next = NULL; + Tail->Next = node_new; + Tail = node_new; +} + +void Init_List() +{ + Head = Tail = NULL; + srand(time(NULL)); + int n = Rand_Get(5, MAXN); + for (int i = 0; i < n; ++i) + { + if (!i) + { + Head = Tail = (struct LinkNode *)malloc(LEN); + Head->Next = NULL; + Head->Value = Get_Num(); + } + else AddNode(Get_Num()); + } +} + +void Traversal() +{ + struct LinkNode *Now = Head; + while (Now != NULL) + { + printf("%d ", Now->Value); + Now = Now->Next; + } + printf("\n"); +} + +void Node_Rev(struct LinkNode *Now) +{ + if (Now->Next != NULL) + { + Node_Rev(Now->Next); + Now->Next->Next = Now; + } + else Head = Now; +} + +void Reverse() +{ + Tail = Head; + Node_Rev(Head); + Tail->Next = NULL; +} + +int Node_Tofind(int _val, int _t)//4 +{ + int id = 0; + struct LinkNode *Now = Head; + while (Now != NULL) + { + if (Now->Value == _val)_t--; + if (!_t)return id; + Now = Now->Next; id++; + } + return -1; +} + + + +int main() +{ + Init_List(); + printf("鍘熼摼琛:\n"); + Traversal(); + Reverse(); + printf("鍙嶈浆:\n"); + Traversal(); + printf("绗竴涓瓑浜5鐨勪綅缃 锛 %d(reversed)\n", Node_Tofind(5, 1)); + printf("绗簩涓瓑浜5鐨勪綅缃細 %d(reversed)\n", Node_Tofind(5, 2)); + return 0; +} \ No newline at end of file From ad0faa3a5f418d2faf7fbfe5c26ce86a31c85940 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Sun, 23 Jun 2019 13:13:38 +0800 Subject: [PATCH 24/35] Add files via upload --- "\344\272\224\345\255\220\346\243\213txt.txt" | 1164 +++++++++++++++++ 1 file changed, 1164 insertions(+) create mode 100644 "\344\272\224\345\255\220\346\243\213txt.txt" diff --git "a/\344\272\224\345\255\220\346\243\213txt.txt" "b/\344\272\224\345\255\220\346\243\213txt.txt" new file mode 100644 index 00000000..422ebcad --- /dev/null +++ "b/\344\272\224\345\255\220\346\243\213txt.txt" @@ -0,0 +1,1164 @@ +锘#include +#include +#include//API鍑芥暟澶存枃浠 +#include//鎺у埗鍙拌緭 鍏ヨ緭鍑哄ご鏂囦欢 + +/*鐣岄潰棰滆壊瀹忓畾涔*/ +#define WhiteColor 63 +#define BlackColor 48 +#define Menu 2 +#define ChessBackground 125 +#define ChessBoardColor 48 +#define TipColor 6//缁胯壊 + +HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);//寰楀埌涓涓爣鍑嗙殑杈撳嚭鍙ユ焺 + +char Chess[15][15][3];//妫嬪瀷瀛楃鏁扮粍 + +int type=0;//璁板綍浜轰汉瀵规垬or浜烘満瀵规垬锛宼ype涓0浜轰汉瀵规垬锛宼ype涓1浜烘満瀵规垬锛岄粯璁や负浜轰汉瀵规垬 + +int flag=-1;//璁板綍榛戠櫧妫嬪摢鏂瑰厛钀藉瓙锛宖lag涓0鐧藉瓙锛堢數鑴戯級鍏堬紝flag涓1榛戝瓙锛堢帺瀹讹級鍏 + +int count=0;//璁板綍涓嬫姝ユ暟锛屼竴鍏卞彲涓225姝 + +int status[15][15]={0};//鏍囪瘑褰撳墠浣嶇疆鐘舵侊紝status[i][j]涓0琛ㄦ槑姝や綅缃负绌猴紝status[i][j]涓1琛ㄦ槑涓虹櫧妫嬶紙鐢佃剳锛夛紝status[i][j]涓2琛ㄦ槑褰撳墠浣嶇疆涓洪粦妫嬶紙鐜╁锛 + +int Winner=0;//鏍囪瘑璧㈠锛學inner=1琛ㄦ槑鐧芥锛堢數鑴戯級鑳滐紝Winner=2琛ㄦ槑榛戞锛堢帺瀹讹級鑳 + +int x=40, y=1;//琛ㄧず褰撳墠榧犳爣鐨勪綅缃 + +int prex=0, prey=0;//璁板綍褰撳墠妫嬫墜涓嬫浣嶇疆锛岀敤浜庢倲妫嬪嚱鏁 + +int prex1=0, prey1=0;//璁板綍妫嬫墜涓婁竴姝ヤ笅妫嬬殑浣嶇疆锛岀敤浜庣數鑴戞倲妫嬪弬鏁 + +int Value1[15][15]={0};//鏀诲嚮鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +int Value2[15][15]={0};//闃插畧鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +void GameStart();//涓嬫鍑芥暟 + +void TextColor(int color)//璁剧疆棰滆壊鍑芥暟 +{ + SetConsoleTextAttribute(hOutput,color);//璁剧疆鎺у埗鍙版枃鏈睘鎬 +} + +void ChessBord()//缁樺埗妫嬬洏褰㈢姸 +{ + int i, j; + strcpy(Chess[0][0],"鈹");//璁剧疆妫嬬洏鍥涜 + strcpy(Chess[14][0],"鈹"); + strcpy(Chess[0][14],"鈹"); + strcpy(Chess[14][14],"鈹"); + for(i=1;i<14;i++) + { + strcpy(Chess[i][0],"鈹"); + strcpy(Chess[i][14],"鈹"); + } + for(j=1;j<14;j++) + { + strcpy(Chess[0][j],"鈹"); + strcpy(Chess[14][j],"鈹"); + } + for(i=1;i<14;i++) + for(j=1;j<14;j++) + strcpy(Chess[i][j],"鈹"); +} + +void ShowChessBoard()//杈撳嚭妫嬬洏褰㈢姸 +{ + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + TextColor(ChessBoardColor);//妫嬬洏棰滆壊 + printf("%s",Chess[i][j]); + //printf(" "); // win10鐜闇瑕佹坊鍔犺璇彞锛屽惁鍒欑晫闈㈡樉绀烘湁闂 + } + printf("\n"); + } +} + +void getto(int x,int y)//鍏夋爣鍑芥暟 +{ + COORD cursor={0,0};//瀹氫箟涓涓厜鏍囧璞 + cursor.X=x; + cursor.Y=y; + SetConsoleCursorPosition(hOutput,cursor);//璁剧疆鍏夋爣浣嶇疆 +} + +void ChooseFirst() //鍏堟墜鍑芥暟锛岀‘瀹氫汉浜/鏈烘ā寮忎互鍙婂厛鍚庢墜 +{ + switch(y) + { + case 3: + { + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐧藉瓙鍏堟墜"); + getto(x,y+2); + printf("2.榛戝瓙鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break;//涓 + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break;//涓 + case 13:if(y==3) flag=0;else flag=1; break;//flag=0 鐧藉瓙鍏堟墜 flag=1 榛戝瓙鍏堟墜 + case 'e':case 'E':case 27: + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + case 5: + { + type=1; //浜烘満瀵规垬妯″紡 + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐢佃剳鍏堟墜"); + getto(x,y+2); + printf("2.鐜╁鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch()) + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break; + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break; + case 13:if(y==3) flag=0;else flag=1;break; //flag=0 鐢佃剳鍏堟墜 flag=1 鐜╁鍏堟墜 + case 'e':case 'E': + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + default: + break; + } +} + +void ShowMenu()//杈撳嚭鑿滃崟閫夐」锛岀敤鎴峰彲瑙嗗寲鐣岄潰 +{ + getto(40,1); + TextColor(Menu); + printf("娆㈣繋浣跨敤浜斿瓙妫"); + getto(36,3); + printf("1.浜轰汉瀵规垬"); + getto(36,5); + printf("2.浜烘満瀵规垬"); + getto(36,7); + printf("B鎮旀(鎸夊揩鎹烽敭B鍗冲彲瀹炶鎮旀)"); + getto(36,9); + printf("E閫鍑(鎸夊揩鎹烽敭E鍗冲彲瀹炶閫鍑)"); + getto(36,11); + printf("R閲嶆柊寮濮(鎸夊揩鎹烽敭R鍗冲彲瀹炶閲嶆柊寮濮)"); + getto(0,16); + printf(" 鎿嶄綔璇存槑锛歕n\n"); + printf("1.鐢ㄦ埛搴斿厛閫夋嫨娓告垙妯″紡锛屽彲浠ユ寜蹇嵎閿'1'銆'2'杩涜閫夋嫨锛屼篃鍙氳繃绉诲姩鍏夋爣瀹炵幇\n\n2.纭畾涓嬫浣嶇疆鍙寜鈫戙佲啌銆佲啇銆佲啋涓姝ユ绉诲姩鍏夋爣,涔熷彲鎸'W'锛堝揩閫熷埌鍒楅锛夈'S'锛堝揩閫熷埌鍒楀熬锛夈'A'锛堝揩閫熷埌琛岄锛夈'D'锛堝揩閫熷埌琛屽熬锛塡n\n3.鎸塭nter纭畾钀藉瓙锛屽悓鏃舵湰娓告垙鎻愪緵鐩稿簲蹇嵎閿搷浣滐紙璇﹁妫嬬洏鍙充晶锛"); + x=36,y=3; + getto(x,y); + while(1) + { + if(flag!=-1) + break; + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case '2': + { + y=5; + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 72: + { + if(y<=3)y=3;else y-=2;//鎺у埗鍏夋爣涓嶄笂瓒呯涓夎 + getto(x,y); + }break; + case 80: + { if(y>=5)y=5;else y+=2;//鎺у埗鍏夋爣涓嶄笅瓒呯浜旇 + getto(x,y); + }break; + case 13: + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + {getto(36,15);exit(0);} + }break;//鎻愬墠缁堟姣旇禌 + default: + break; + } + + }//while缁撴潫锛屽緱鍒扮敤鎴风殑閫夋嫨缁撴灉锛屽嵆浣曟柟鍏堜笅 +} + +void showplayer()//鏄剧ず鍝柟鎵у瓙 +{ + + TextColor(TipColor); + if(type==0)//浜轰汉妯″紡 + { + if(count%2==flag) + printf("鐧藉瓙鎵ф墜"); + else + printf("榛戝瓙鎵ф墜"); + } + else //浜烘満妯″紡 + { + if(count%2==flag) + printf("鐢佃剳鎵ф墜"); + else + printf("鐜╁鎵ф墜"); + } +} + +void WhiteChess(int x,int y)//杈撳嚭鐧芥瀛 +{ + getto(x,y); + TextColor(WhiteColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +void BlackChess(int x,int y)//杈撳嚭榛戞瀛 +{ + getto(x,y); + TextColor(BlackColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +int ResultCheck(int x,int y,int player) //鍒ゆ柇鏄惁鏈変汉鑳滃埄锛岃嫢鏈変汉鑾疯儨鍒欒繑鍥瀙layer,鍙嶄箣杩斿洖0 +{ + int n1, n2; + int i, j; + n1=n2=0; + for(i=x,j=y;j>=0;j--)//寰宸︽暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x,j=y+1;j<15;j++)//寰鍙虫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0;i--)//寰涓婃暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y;i<15;i++)//寰涓嬫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0&&j>=0;i--,j--)//寰宸︿笂鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y+1;i<15&&j<15;i++,j++)//寰鍙充笅鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i<15&&j>=0;i++,j--)//寰宸︿笅鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x-1,j=y+1;i>=0&&j<15;i--,j++)//寰鍙充笂鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + return 0; //鏈湁浜斿瓙杩炴垚 +} + +void Back()//鎮旀鍑芥暟 +{ + if(status[prey][prex/2])//閬垮厤鐢ㄦ埛澶氭鎮旀 + { + status[prey][prex/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex,prey); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey][prex/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex,prey); + } +} + +void Back1()//鎮旀鍑芥暟2锛屽綋杩涜浜烘満瀵规垬鏃惰皟鐢 +{ + if(status[prey1][prex1/2])//閬垮厤鐢ㄦ埛澶氭鎮 妫 + { + status[prey1][prex1/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex1,prey1); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey1][prex1/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex1,prey1); + } +} + +void ShowResult()//杈撳嚭涓嬫缁撴灉 +{ + getto(36,15); + if(count>=225) + printf("骞冲眬锛"); + if(type==0) //浜轰汉瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"鐧藉瓙鍚涙妫掑搾~~鎴樿儨浜嗛粦瀛愬悰~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"榛戝瓙鍚涙妫掑搾~~鎴樿儨浜嗙櫧瀛愬悰~~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + } + else //浜烘満瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"浜诧紝浣犵珶鐒惰緭缁欎簡鐢佃剳锛屽洖瀹舵礂娲楃潯鍚э紒%>_<%","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"浜诧紝浣犲お鍘夊浜嗭紝浣犵珶鐒跺彲浠ユ垬鑳滅數鑴戯紒\^鈼嘵/","浜斿瓙妫嬫父鎴",MB_OK); + } +} + +void save()//淇濆瓨娈嬪眬 +{ + int i,j; + char str[4]; + FILE *fp=fopen("data.txt","w");//鎵撳紑鏂囦欢锛屾妸status[i][j]銆乼ype銆乫lag銆乧ount鍐欏叆data.txt鏂囦欢 + if(fp==NULL) + { + printf("淇濆瓨娈嬪眬澶辫触"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + fputc(status[i][j]+'0',fp); + fputc(type+'0',fp); + fputc(flag+'0',fp); + itoa(count,str,10);//灏嗘暣鏁拌浆鎹㈡垚瀛楃涓诧紝骞剁粰鍑鸿繘鍒舵暟 + fputs(str,fp); + fclose(fp); +} + +void Continue() +{ + int i, j; + char str[4]; + FILE *fp=fopen("data.txt","r");//鎵撳紑鏂囦欢璇诲嚭鐩稿簲鏁版嵁 + if(fp==NULL) + { + printf("鎭㈠娈嬪眬澶辫触......"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + status[i][j]=fgetc(fp)-'0'; + type=fgetc(fp)-'0'; + flag=fgetc(fp)-'0'; + char ch=fgetc(fp); + i=0; + while(ch!=EOF) + { + str[i++]=ch; + ch=fgetc(fp); + } + str[i]='\0'; + fclose(fp); + count=atoi(str);//灏嗗瓧绗︿覆杞崲鎴愭暣鏁 + for(i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(status[i][j]==1) + WhiteChess(2*j,i); + if(status[i][j]==2) + BlackChess(2*j,i); + } +} + +void ValueJudgeAttack() //杩涙敾鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value1[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=y;i1<15;i1++)//寰涓嬫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1? k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1 ) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]== 1) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value[i][j]=3 + { //k=1,Value[i][j]=5 + case 3: //k=2, Value[i][j]=7 + Value1[i][j]=15;break; //k=3,Value[i][j]=15 + case 4: + Value1[i][j]=25;break; //k=4,Value[i][j]=25 + default: + Value1[i][j]=3+2*k;break; + } + }//end of if + }//end of second for + }//end of first for +}//end of the function + +void ValueJudgeDefend()//闃插尽鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value2[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j;i1<15;i1++)//寰涓嬫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value2[i][j]=2 + { //k=1,Value2[i][j]=4 + case 3: //k=2,Value2i][j]=6 + Value2[i][j]=10;break; //k=3,Value2[i][j]=10 + case 4: //k=4,Value2[i][j]=20 + Value2[i][j]=20;break; + default: + Value2[i][j]=2+k*2; + } + } + } + } +} + +void FindPosition()//鎵惧埌鏈鏈変环鍊肩殑浣嶇疆 +{ + int k1=0, k2=0; + int i, j, max=0; + for( i=0;i<15;i++) + for( j=0;j<15;j++) + { + if(max<=Value1[i][j]) + { + max=Value1[i][j]; + k1=i; + k2=j; + } + } + for( i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(max<=Value2[i][j]) + { + max=Value2[i][j]; + k1=i; + k2=j; + } + } + x=2*k2; //灏嗘壘鍒扮殑浣嶇疆浼犵粰鍏夋爣 + y=k1; +} + +void MantoMan() //浜轰汉妯″紡 +{ + while(1)//褰撴湁浜鸿幏鑳滐紝璺冲嚭寰幆锛岀粨鏉熸父鎴 + { + getto(36,13); //杈撳嚭褰撳墠涓嬫鏂 + showplayer(); + getto(x,y); //鍏夋爣璺冲埌妫嬬洏涓ぎ + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + Back();//璋冪敤鎮旀鍑芥暟 + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2==flag) //flag涓0鏃讹紝鐧芥鍏堜笅锛沠lag涓1鏃讹紝榛戞鍏堜笅 + { + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + else + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦鑿滃崟閫夐」 + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer1()//浜烘満妯″紡锛岀數鑴戝厛涓 +{ + x=14,y=7; + WhiteChess(x,y); //鐢佃剳鍏堜笅锛屼笖绗竴瀛愯惤鍦ㄦ鐩樹腑澶 + getto(x,y); + status[y][x/2]=1; + count++; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鈫戝厜鏍囦笂绉 + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鈫撳厜鏍囦笅绉 + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + if(count<=1) + continue; + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓0鐜╁鍚庝笅锛屼笖涓嬪畬鍚庣數鑴戞帴鐫涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + }break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer2()//浜烘満妯″紡锛岀帺瀹跺厛涓 +{ + x=14,y=7; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓1鐜╁鍏堜笅锛屼笖涓嬪畬鍚庣數鑴戝啀涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず锛",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 +} + +void GameStart()//涓嬫鍑芥暟 +{ + x=14,y=7; + getto(x,y); + if(type==0) + MantoMan(); //浜轰汉妯″紡 + else + { + if(flag==0) + MantoComputer1();//鐢佃剳鍏堟墜 + if(flag==1) + MantoComputer2();//鐜╁鍏堟墜 + } + ShowResult(); //鏄剧ず娓告垙缁撴灉 +} + +int main() +{ + FILE *fp=fopen("data.txt","r");//瀹氫箟涓涓枃浠舵寚閽堟寚鍚戞暟鎹繚瀛樻枃浠 + ChessBord();//缁樺埗妫嬬洏 + system("cls");//瀹炵幇娓呭睆 + ShowChessBoard();//杈撳嚭妫嬬洏 + char ch=fgetc(fp); + fclose(fp); + if(ch!=EOF) //鍒ゆ柇鏂囦欢鏄惁涓虹┖锛岃嫢闈炵┖鍒欒〃鏄巇ata.txt鏂囦欢閲屾湁鏁版嵁 + { + int message=MessageBox(NULL,"妫娴嬪埌鎮ㄤ笂娆′簲瀛愭杩樻病鏈変笅瀹岋紝鏄惁缁х画锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + { + fp=fopen("data.txt","w");//鑻ョ敤鎴峰彇娑堟仮澶嶆畫灞锛屽垯瀵瑰師鏁版嵁鏂囦欢杩涜鏀瑰啓瑕嗙洊锛岄伩鍏嶅娆℃彁閱掔敤鎴锋仮澶嶆畫灞 + fclose(fp); + } + if(IDOK==message) + { + Continue();//璋冪敤鎭㈠娈嬪眬鍑芥暟 + ShowMenu();//杈撳嚭鑿滃崟 + x=14,y=7; + getto(14,7); + if(type==0) //鏍规嵁瀵瑰師鏁版嵁鐨勫垽鏂紝鎭㈠娓告垙鐜板満锛屽嵆娓告垙妯″紡銆佸厛鍚庢墜闂 + { + MantoMan(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2==flag)) + { + MantoComputer1(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2!=flag)) + { + MantoComputer2(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + fp=fopen("data.txt","w");//鎭㈠娈嬪眬鍚庡簲鍙婃椂瀵瑰鍘熸暟鎹枃浠惰繘琛屾敼鍐欒鐩栵紝閬垮厤澶氭鎻愰啋鐢ㄦ埛鎭㈠娈嬪眬 + fclose(fp); + } + } + if(!Winner) + { + ShowMenu();//杈撳嚭鑿滃崟 + getto(36,3); + GameStart();//寮濮嬫父鎴*/ + } + return 0; +} \ No newline at end of file From 244422f5c59d8e63e245fe2ef7c19cd89cc72eac Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:33:01 +0800 Subject: [PATCH 25/35] Delete mazeutf.txt --- level1/p09_maze/mazeutf.txt | 164 ------------------------------------ 1 file changed, 164 deletions(-) delete mode 100644 level1/p09_maze/mazeutf.txt diff --git a/level1/p09_maze/mazeutf.txt b/level1/p09_maze/mazeutf.txt deleted file mode 100644 index 739260d2..00000000 --- a/level1/p09_maze/mazeutf.txt +++ /dev/null @@ -1,164 +0,0 @@ -锘#include -#include -#include -#include -#define Height 25 //杩峰鐨勯珮搴 -#define Width 25 //杩峰鐨勫搴 -#define Wall 1 -#define Road 0 -#define Start 2 -#define End 3 -#define Esc 5 -#define Up 1 -#define Down 2 -#define Left 3 -#define Right 4 -int map[Height+2][Width+2]; -void gotoxy(int x,int y) //鐜╁鍧愭爣 -{ - COORD coord; - coord.X=x; - coord.Y=y; - SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); -} -void hidden()//闅愯棌鍏夋爣 -{ - HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); - CONSOLE_CURSOR_INFO cci; - GetConsoleCursorInfo(hOut,&cci); - cci.bVisible=0;//璧1涓烘樉绀猴紝璧0涓洪殣钘 - SetConsoleCursorInfo(hOut,&cci); -} -void create(int x,int y) //闅忔満鐢熸垚杩峰 -{ - int c[4][2]={0,1,1,0,0,-1,-1,0}; //鍥涗釜鏂瑰悜 - int i,j,t;//灏嗘柟鍚戞墦涔 - for(i=0;i<4;i++) - { - j=rand()%4; - t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; - t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; - } - map[x][y]=Road; - for(i=0;i<4;i++) - if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) - { - map[x+c[i][0]][y+c[i][1]]=Road; - create(x+2*c[i][0],y+2*c[i][1]); - } -} -int get_key() //鎺ユ敹鎸夐敭 -{ - char c; - while(c=getch()) - { - if(c==27) return Esc; //Esc - if(c!=-32)continue; - c=getch(); - if(c==72) return Up; //涓 - if(c==80) return Down; //涓 - if(c==75) return Left; //宸 - if(c==77) return Right; //鍙 - } - return 0; -} -void paint(int x,int y) //鐢昏糠瀹 -{ - gotoxy(2*y-2,x-1); - switch(map[x][y]) - { - case Start: - printf("鍏");break; // - case End: - printf("鍑");break; // - case Wall: - printf("鈻");break; // - case Road: - printf(" ");break; // - } -} -void game() -{ - int x=2,y=1; //鐜╁褰撳墠浣嶇疆锛屽垰寮濮嬪湪鍏ュ彛澶 - int c; //鐢ㄦ潵鎺ユ敹鎸夐敭 - while(1) - { - gotoxy(2*y-2,x-1); - printf("鈼"); //鐢诲嚭鐜╁褰撳墠浣嶇疆 - if(map[x][y]==End) //鍒ゆ柇鏄惁鍒拌揪鍑哄彛 - { - gotoxy(30,24); - printf("鍒拌揪缁堢偣锛屾寜浠绘剰閿粨鏉"); - getch(); - break; - } - c=get_key(); - if(c==Esc) - { - gotoxy(0,24); - break; - } - switch(c) - { - case Up: //鍚戜笂璧 - if(map[x-1][y]!=Wall) - { - paint(x,y); - x--; - } - break; - case Down: //鍚戜笅璧 - if(map[x+1][y]!=Wall) - { - paint(x,y); - x++; - } - break; - case Left: //鍚戝乏璧 - if(map[x][y-1]!=Wall) - { - paint(x,y); - y--; - } - break; - case Right: //鍚戝彸璧 - if(map[x][y+1]!=Wall) - { - paint(x,y); - y++; - } - break; - } - } -} -int main() -{ - system("title your name"); - int i,j; - srand((unsigned)time(NULL)); //鍒濆鍖栭殢鏈虹瀛 - hidden(); //闅愯棌鍏夋爣 - for(i=0;i<=Height+1;i++) - for(j=0;j<=Width+1;j++) - if(i==0||i==Height+1||j==0||j==Width+1) //鍒濆鍖栬糠瀹 - map[i][j]=Road; - else map[i][j]=Wall; - create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //浠庨殢鏈轰竴涓偣寮濮嬬敓鎴愯糠瀹 - for(i=0;i<=Height+1;i++) //杈圭晫澶勭悊 - { - map[i][0]=Wall; - map[i][Width+1]=Wall; - } - for(j=0;j<=Width+1;j++) //杈圭晫澶勭悊 - { - map[0][j]=Wall; - map[Height+1][j]=Wall; - } - map[2][1]=Start; //缁欏畾鍏ュ彛 - map[Height-1][Width]=End; //缁欏畾鍑哄彛 - for(i=1;i<=Height;i++) - for(j=1;j<=Width;j++) //鐢诲嚭杩峰 - paint(i,j); - game(); //寮濮嬫父鎴 - getch(); - return 0; -} From 67c075d930756286fda6b50517abcaf7414ed2fe Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:34:43 +0800 Subject: [PATCH 26/35] Add files via upload --- level1/p09_maze/09.cpp | 165 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 level1/p09_maze/09.cpp diff --git a/level1/p09_maze/09.cpp b/level1/p09_maze/09.cpp new file mode 100644 index 00000000..a1620a29 --- /dev/null +++ b/level1/p09_maze/09.cpp @@ -0,0 +1,165 @@ +锘#include +#include +#include +#include +#define Height 25 //杩峰鐨勯珮搴 +#define Width 25 //杩峰鐨勫搴 +#define Wall 1 +#define Road 0 +#define Start 2 +#define End 3 +#define Esc 5 +#define Up 1 +#define Down 2 +#define Left 3 +#define Right 4 +int map[Height+2][Width+2]; +void gotoxy(int x,int y) //鐜╁鍧愭爣 +{ + COORD coord; + coord.X=x; + coord.Y=y; + SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord ); +} +void hidden()//闅愯棌鍏夋爣 +{ + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_CURSOR_INFO cci; + GetConsoleCursorInfo(hOut,&cci); + cci.bVisible=0;//璧1涓烘樉绀猴紝璧0涓洪殣钘 + SetConsoleCursorInfo(hOut,&cci); +} +void create(int x,int y) //闅忔満鐢熸垚杩峰 +{ + int c[4][2]={0,1,1,0,0,-1,-1,0}; //鍥涗釜鏂瑰悜 + int i,j,t;//灏嗘柟鍚戞墦涔 + for(i=0;i<4;i++) + { + j=rand()%4; + t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; + t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; + } + map[x][y]=Road; + for(i=0;i<4;i++) + if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) + { + map[x+c[i][0]][y+c[i][1]]=Road; + create(x+2*c[i][0],y+2*c[i][1]); + } +} +int get_key() //鎺ユ敹鎸夐敭 +{ + char c; + while(c=getch()) + { + if(c==27) return Esc; //Esc + if(c!=-32)continue; + c=getch(); + if(c==72) return Up; //涓 + if(c==80) return Down; //涓 + if(c==75) return Left; //宸 + if(c==77) return Right; //鍙 + } + return 0; +} +void paint(int x,int y) //鐢昏糠瀹 +{ + gotoxy(2*y-2,x-1); + switch(map[x][y]) + { + case Start: + printf("鍏");break; // + case End: + printf("鍑");break; // + case Wall: + printf("鈻");break; // + case Road: + printf(" ");break; // + } +} +void game() +{ + int x=2,y=1; //鐜╁褰撳墠浣嶇疆锛屽垰寮濮嬪湪鍏ュ彛澶 + int c; //鐢ㄦ潵鎺ユ敹鎸夐敭 + while(1) + { + gotoxy(2*y-2,x-1); + printf("鈼"); //鐢诲嚭鐜╁褰撳墠浣嶇疆 + if(map[x][y]==End) //鍒ゆ柇鏄惁鍒拌揪鍑哄彛 + { + gotoxy(30,24); + printf("鍒拌揪缁堢偣锛屾寜浠绘剰閿粨鏉"); + getch(); + break; + } + c=get_key(); + if(c==Esc) + { + gotoxy(0,24); + break; + } + switch(c) + { + case Up: //鍚戜笂璧 + if(map[x-1][y]!=Wall) + { + paint(x,y); + x--; + } + break; + case Down: //鍚戜笅璧 + if(map[x+1][y]!=Wall) + { + paint(x,y); + x++; + } + break; + case Left: //鍚戝乏璧 + if(map[x][y-1]!=Wall) + { + paint(x,y); + y--; + } + break; + case Right: //鍚戝彸璧 + if(map[x][y+1]!=Wall) + { + paint(x,y); + y++; + } + break; + } + } +} +int main() +{ + system("title your name"); + int i,j; + srand((unsigned)time(NULL)); //鍒濆鍖栭殢鏈虹瀛 + hidden(); //闅愯棌鍏夋爣 + for(i=0;i<=Height+1;i++) + for(j=0;j<=Width+1;j++) + if(i==0||i==Height+1||j==0||j==Width+1) //鍒濆鍖栬糠瀹 + map[i][j]=Road; + else map[i][j]=Wall; + create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //浠庨殢鏈轰竴涓偣寮濮嬬敓鎴愯糠瀹 + for(i=0;i<=Height+1;i++) //杈圭晫澶勭悊 + { + map[i][0]=Wall; + map[i][Width+1]=Wall; + } + for(j=0;j<=Width+1;j++) //杈圭晫澶勭悊 + { + map[0][j]=Wall; + map[Height+1][j]=Wall; + } + map[2][1]=Start; //缁欏畾鍏ュ彛 + map[Height-1][Width]=End; //缁欏畾鍑哄彛 + for(i=1;i<=Height;i++) + for(j=1;j<=Width;j++) //鐢诲嚭杩峰 + paint(i,j); + game(); //寮濮嬫父鎴 + getch(); + return 0; +} + From 517d040d8809549d88d4066fb40ab749f8b9d1e8 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:36:32 +0800 Subject: [PATCH 27/35] =?UTF-8?q?Delete=20=E6=8E=A8=E7=AE=B1=E5=AD=90utf.t?= =?UTF-8?q?xt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\216\250\347\256\261\345\255\220utf.txt" | 165 ------------------ 1 file changed, 165 deletions(-) delete mode 100644 "level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" diff --git "a/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" "b/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" deleted file mode 100644 index 709de83b..00000000 --- "a/level1/p10_pushBoxes/\346\216\250\347\256\261\345\255\220utf.txt" +++ /dev/null @@ -1,165 +0,0 @@ -锘 -#include -#include -#include - -int map[9][11] = { - {0,1,1,1,1,1,1,1,1,1,0}, //0浠h〃绌哄湴 - {0,1,0,0,0,1,0,0,0,1,0}, //1浠h〃澧 - {0,1,0,4,4,4,4,4,0,1,0}, //3浠h〃鐩殑鍦 - {0,1,0,4,0,4,0,4,0,1,1}, //4浠h〃绠卞瓙 - {0,1,0,0,0,0,0,0,4,0,1}, //5浠h〃浜 - {1,1,0,1,1,1,1,0,4,0,1}, - {1,0,8,3,3,3,3,1,0,0,1}, //2 3 4 5 6 7 8 9 1 0 - {1,0,3,3,3,3,3,0,0,1,1}, - {1,1,1,1,1,1,1,1,1,1,0} }; -void DrawMap() -{ - //閬嶅巻浜岀淮鏁扮粍 //0 鎵撳嵃绌烘牸 //1 澧 //3 鐩殑鍦 - for (int i = 0; i < 9; i++) - { - for (int j = 0; j < 11; j++) - { - //if else switch - switch (map[i][j]) - { - case 0: - printf(" "); - break; - case 1: - printf("鈻"); - break; - case 3: - printf("鈽"); - break; - case 4: - printf("鈻"); - break; - case 5: - printf("鈾"); - break; - case 7: - printf("鈽"); - break; - case 8: - printf("鈾"); - break; - } - } - printf("\n"); - } -} - - -void PlayGame() -{ - int r, c; //浜虹殑涓嬫爣 - for (int i = 0; i < 9; i++) - { - for (int j = 0; j < 11; j++) - { - if (map[i][j] == 5||map[i][j]==8) //i j 浜虹殑涓嬫爣 - { - r = i; - c = j; - } - } - } - - char ch; //瀛楃鍙橀噺 - ch = getch(); //閿洏鐨勮緭鍏ヤ繚瀛樺埌瀛楃涓 - // getch() getchar() 鎺ユ敹閿洏瀛楃 - // getch()鐩存帴鎺ユ敹 涓嶆樉绀哄洖鏂 getchar()鏄剧ず鍥炴枃鍙互淇敼 enter閿粨鏉 - - //鏍规嵁涓嶅悓鐨勬寜閿 鏀瑰彉涓嶅悓鐨勫. 鍒嗘敮. - switch (ch) - { - case 'W': //W A S D鏂瑰悜 - case 'w': - case 72: - if (map[r - 1][c] == 0|| map[r - 1][c] == 3) - { - map[r - 1][c] += 5; - map[r][c] -= 5; - } - else if (map[r - 1][c] == 4 || map[r - 1][c] == 7) - { - if (map[r - 2][c] == 0 || map[r - 2][c] == 3) - { - map[r - 2][c] += 4; - map[r - 1][c] += 1; - map[r][c] -= 5; - } - } - break; - case 'S': //enter鎸夐敭鐨勪綔鐢 纭 杩斿洖 - case 's': - case 80: - if (map[r + 1][c] == 0 || map[r + 1][c] == 3) - { - map[r + 1][c] += 5; - map[r][c] -= 5; - } - else if (map[r + 1][c] == 4 || map[r+ 1][c] == 7) - { - if (map[r + 2][c] == 0 || map[r + 2][c] == 3) - { - map[r + 2][c] += 4; - map[r + 1][c] += 1; - map[r][c] -= 5; - } - } - break; - - case 'A': - case 'a': - case 75: - if (map[r ][c - 1] == 0 || map[r ][c - 1] == 3) - { - map[r ][c - 1] += 5; - map[r][c] -= 5; - } - else if (map[r][c - 1] == 4 || map[r][c - 1] == 7) - { - if (map[r ][c - 2] == 0 || map[r ][c - 2] == 3) - { - map[r ][c - 2] += 4; - map[r ][c - 1] += 1; - map[r][c] -= 5; - } - } - break; - - case 'D': - case 'd': - case 77: - if (map[r][c + 1] == 0 || map[r][c + 1] == 3) - { - map[r][c + 1] += 5; - map[r][c] -= 5; - } - else if (map[r][c + 1] == 4 || map[r][c + 1] == 7) - { - if (map[r][c + 2] == 0 || map[r][c + 2] == 3) - { - map[r][c + 2] += 4; - map[r][c + 1] += 1; - map[r][c] -= 5; - } - } - break; - } -} - -// -int main() //涓诲嚱鏁 -{ - while (1) - { - system("cls"); - DrawMap(); - PlayGame(); - } - - return 0; -} From da4f9c905b6d603102716f28b1f91473c8088f85 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:36:48 +0800 Subject: [PATCH 28/35] Add files via upload --- level1/p10_pushBoxes/10.cpp | 166 ++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 level1/p10_pushBoxes/10.cpp diff --git a/level1/p10_pushBoxes/10.cpp b/level1/p10_pushBoxes/10.cpp new file mode 100644 index 00000000..3d90f2a9 --- /dev/null +++ b/level1/p10_pushBoxes/10.cpp @@ -0,0 +1,166 @@ +锘 +#include +#include +#include + +int map[9][11] = { + {0,1,1,1,1,1,1,1,1,1,0}, //0浠h〃绌哄湴 + {0,1,0,0,0,1,0,0,0,1,0}, //1浠h〃澧 + {0,1,0,4,4,4,4,4,0,1,0}, //3浠h〃鐩殑鍦 + {0,1,0,4,0,4,0,4,0,1,1}, //4浠h〃绠卞瓙 + {0,1,0,0,0,0,0,0,4,0,1}, //5浠h〃浜 + {1,1,0,1,1,1,1,0,4,0,1}, + {1,0,8,3,3,3,3,1,0,0,1}, //2 3 4 5 6 7 8 9 1 0 + {1,0,3,3,3,3,3,0,0,1,1}, + {1,1,1,1,1,1,1,1,1,1,0} }; +void DrawMap() +{ + //閬嶅巻浜岀淮鏁扮粍 //0 鎵撳嵃绌烘牸 //1 澧 //3 鐩殑鍦 + for (int i = 0; i < 9; i++) + { + for (int j = 0; j < 11; j++) + { + //if else switch + switch (map[i][j]) + { + case 0: + printf(" "); + break; + case 1: + printf("鈻"); + break; + case 3: + printf("鈽"); + break; + case 4: + printf("鈻"); + break; + case 5: + printf("鈾"); + break; + case 7: + printf("鈽"); + break; + case 8: + printf("鈾"); + break; + } + } + printf("\n"); + } +} + + +void PlayGame() +{ + int r, c; //浜虹殑涓嬫爣 + for (int i = 0; i < 9; i++) + { + for (int j = 0; j < 11; j++) + { + if (map[i][j] == 5||map[i][j]==8) //i j 浜虹殑涓嬫爣 + { + r = i; + c = j; + } + } + } + + char ch; //瀛楃鍙橀噺 + ch = getch(); //閿洏鐨勮緭鍏ヤ繚瀛樺埌瀛楃涓 + // getch() getchar() 鎺ユ敹閿洏瀛楃 + // getch()鐩存帴鎺ユ敹 涓嶆樉绀哄洖鏂 getchar()鏄剧ず鍥炴枃鍙互淇敼 enter閿粨鏉 + + //鏍规嵁涓嶅悓鐨勬寜閿 鏀瑰彉涓嶅悓鐨勫. 鍒嗘敮. + switch (ch) + { + case 'W': //W A S D鏂瑰悜 + case 'w': + case 72: + if (map[r - 1][c] == 0|| map[r - 1][c] == 3) + { + map[r - 1][c] += 5; + map[r][c] -= 5; + } + else if (map[r - 1][c] == 4 || map[r - 1][c] == 7) + { + if (map[r - 2][c] == 0 || map[r - 2][c] == 3) + { + map[r - 2][c] += 4; + map[r - 1][c] += 1; + map[r][c] -= 5; + } + } + break; + case 'S': //enter鎸夐敭鐨勪綔鐢 纭 杩斿洖 + case 's': + case 80: + if (map[r + 1][c] == 0 || map[r + 1][c] == 3) + { + map[r + 1][c] += 5; + map[r][c] -= 5; + } + else if (map[r + 1][c] == 4 || map[r+ 1][c] == 7) + { + if (map[r + 2][c] == 0 || map[r + 2][c] == 3) + { + map[r + 2][c] += 4; + map[r + 1][c] += 1; + map[r][c] -= 5; + } + } + break; + + case 'A': + case 'a': + case 75: + if (map[r ][c - 1] == 0 || map[r ][c - 1] == 3) + { + map[r ][c - 1] += 5; + map[r][c] -= 5; + } + else if (map[r][c - 1] == 4 || map[r][c - 1] == 7) + { + if (map[r ][c - 2] == 0 || map[r ][c - 2] == 3) + { + map[r ][c - 2] += 4; + map[r ][c - 1] += 1; + map[r][c] -= 5; + } + } + break; + + case 'D': + case 'd': + case 77: + if (map[r][c + 1] == 0 || map[r][c + 1] == 3) + { + map[r][c + 1] += 5; + map[r][c] -= 5; + } + else if (map[r][c + 1] == 4 || map[r][c + 1] == 7) + { + if (map[r][c + 2] == 0 || map[r][c + 2] == 3) + { + map[r][c + 2] += 4; + map[r][c + 1] += 1; + map[r][c] -= 5; + } + } + break; + } +} + +// +int main() //涓诲嚱鏁 +{ + while (1) + { + system("cls"); + DrawMap(); + PlayGame(); + } + + return 0; +} + From 9412054149ad2232f5d32675ccb74bf078116472 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:38:32 +0800 Subject: [PATCH 29/35] =?UTF-8?q?Delete=20=E9=93=BE=E8=A1=A8.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\351\223\276\350\241\250.txt" | 108 ------------------ 1 file changed, 108 deletions(-) delete mode 100644 "level1/p11_linkedList/\351\223\276\350\241\250.txt" diff --git "a/level1/p11_linkedList/\351\223\276\350\241\250.txt" "b/level1/p11_linkedList/\351\223\276\350\241\250.txt" deleted file mode 100644 index c9ebf732..00000000 --- "a/level1/p11_linkedList/\351\223\276\350\241\250.txt" +++ /dev/null @@ -1,108 +0,0 @@ -锘#include -#include -#include - - -#define MAXN 20 -#define MAXNUM 10 -#define LEN sizeof(struct LinkNode) - -struct LinkNode -{ - int Value; - struct LinkNode *Next; -}*Head, *Tail; - -int Rand_Get(int Rand_Min, int Rand_Max) -{ - return rand() % (Rand_Max - Rand_Min + 1) + Rand_Min; -} - -int Get_Num() -{ - if (Rand_Get(1, 4) == 1)return 5; - return Rand_Get(1, MAXNUM); -} - -void AddNode(int _val) -{ - struct LinkNode *node_new; - node_new = (struct LinkNode *)malloc(LEN); - node_new->Value = _val; - node_new->Next = NULL; - Tail->Next = node_new; - Tail = node_new; -} - -void Init_List() -{ - Head = Tail = NULL; - srand(time(NULL)); - int n = Rand_Get(5, MAXN); - for (int i = 0; i < n; ++i) - { - if (!i) - { - Head = Tail = (struct LinkNode *)malloc(LEN); - Head->Next = NULL; - Head->Value = Get_Num(); - } - else AddNode(Get_Num()); - } -} - -void Traversal() -{ - struct LinkNode *Now = Head; - while (Now != NULL) - { - printf("%d ", Now->Value); - Now = Now->Next; - } - printf("\n"); -} - -void Node_Rev(struct LinkNode *Now) -{ - if (Now->Next != NULL) - { - Node_Rev(Now->Next); - Now->Next->Next = Now; - } - else Head = Now; -} - -void Reverse() -{ - Tail = Head; - Node_Rev(Head); - Tail->Next = NULL; -} - -int Node_Tofind(int _val, int _t)//4 -{ - int id = 0; - struct LinkNode *Now = Head; - while (Now != NULL) - { - if (Now->Value == _val)_t--; - if (!_t)return id; - Now = Now->Next; id++; - } - return -1; -} - - - -int main() -{ - Init_List(); - printf("鍘熼摼琛:\n"); - Traversal(); - Reverse(); - printf("鍙嶈浆:\n"); - Traversal(); - printf("绗竴涓瓑浜5鐨勪綅缃 锛 %d(reversed)\n", Node_Tofind(5, 1)); - printf("绗簩涓瓑浜5鐨勪綅缃細 %d(reversed)\n", Node_Tofind(5, 2)); - return 0; -} \ No newline at end of file From 9fae957463146811e5e83ffcb0acf59e65a02412 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:38:46 +0800 Subject: [PATCH 30/35] Add files via upload --- level1/p11_linkedList/11.cpp | 108 +++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 level1/p11_linkedList/11.cpp diff --git a/level1/p11_linkedList/11.cpp b/level1/p11_linkedList/11.cpp new file mode 100644 index 00000000..7493d2db --- /dev/null +++ b/level1/p11_linkedList/11.cpp @@ -0,0 +1,108 @@ +锘#include +#include +#include + + +#define MAXN 20 +#define MAXNUM 10 +#define LEN sizeof(struct LinkNode) + +struct LinkNode +{ + int Value; + struct LinkNode *Next; +}*Head, *Tail; + +int Rand_Get(int Rand_Min, int Rand_Max) +{ + return rand() % (Rand_Max - Rand_Min + 1) + Rand_Min; +} + +int Get_Num() +{ + if (Rand_Get(1, 4) == 1)return 5; + return Rand_Get(1, MAXNUM); +} + +void AddNode(int _val) +{ + struct LinkNode *node_new; + node_new = (struct LinkNode *)malloc(LEN); + node_new->Value = _val; + node_new->Next = NULL; + Tail->Next = node_new; + Tail = node_new; +} + +void Init_List() +{ + Head = Tail = NULL; + srand(time(NULL)); + int n = Rand_Get(5, MAXN); + for (int i = 0; i < n; ++i) + { + if (!i) + { + Head = Tail = (struct LinkNode *)malloc(LEN); + Head->Next = NULL; + Head->Value = Get_Num(); + } + else AddNode(Get_Num()); + } +} + +void Traversal() +{ + struct LinkNode *Now = Head; + while (Now != NULL) + { + printf("%d ", Now->Value); + Now = Now->Next; + } + printf("\n"); +} + +void Node_Rev(struct LinkNode *Now) +{ + if (Now->Next != NULL) + { + Node_Rev(Now->Next); + Now->Next->Next = Now; + } + else Head = Now; +} + +void Reverse() +{ + Tail = Head; + Node_Rev(Head); + Tail->Next = NULL; +} + +int Node_Tofind(int _val, int _t)//4 +{ + int id = 0; + struct LinkNode *Now = Head; + while (Now != NULL) + { + if (Now->Value == _val)_t--; + if (!_t)return id; + Now = Now->Next; id++; + } + return -1; +} + + + +int main() +{ + Init_List(); + printf("鍘熼摼琛:\n"); + Traversal(); + Reverse(); + printf("鍙嶈浆:\n"); + Traversal(); + printf("绗竴涓瓑浜5鐨勪綅缃 锛 %d(reversed)\n", Node_Tofind(5, 1)); + printf("绗簩涓瓑浜5鐨勪綅缃細 %d(reversed)\n", Node_Tofind(5, 2)); + return 0; +} From 650d8d049bc4887db8bbc14f211283837c86d86a Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:41:08 +0800 Subject: [PATCH 31/35] =?UTF-8?q?Delete=20utf=E8=B6=85=E5=B8=82.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utf\350\266\205\345\270\202.txt" | 312 ------------------ 1 file changed, 312 deletions(-) delete mode 100644 "level1/p12_warehouse/utf\350\266\205\345\270\202.txt" diff --git "a/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" "b/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" deleted file mode 100644 index 82a02221..00000000 --- "a/level1/p12_warehouse/utf\350\266\205\345\270\202.txt" +++ /dev/null @@ -1,312 +0,0 @@ -锘#include -#include -#include -#define MAX 10 -void start(); -void output(); -void input(); -void change(); -void dele(); -void search(); -void insert(); -struct GOODS -{ - char goods_id[30]; - char goods_name[30]; - char goods_price[20]; - char goods_discount[20]; - int goods_amount; - int goods_remain; -}; -struct GOODS goods[MAX],goodsinsert[MAX],G[MAX]; -int count=0; -int main() -{ - while(1) - start(); - } -void start() -{ -int ch; -printf("\n\t\t\t\t瓒呭競鍟嗗搧淇℃伅绠$悊绯荤粺\n"); -printf("\t\t\t****************************\n"); -printf("\t\t\t1.鍟嗗搧鐨勫綍鍏n"); -printf("\t\t\t2.淇敼鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); -printf("\t\t\t3.鍒犻櫎鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); -printf("\t\t\t4.鏌ユ壘鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); -printf("\t\t\t5.鎻掑叆鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); -printf("\t\t\t6.閫鍑虹郴缁焅n"); -printf("\t\t\t****************************\n"); -printf("\n\n杈撳叆浣犵殑閫夋嫨锛1-6锛:"); -scanf("%d",&ch); - switch(ch) - { - case 1: - { - input(); - break;} - case 2: - { - change(); - break; - } - case 3: - { - dele(); - break; - } - case 4: - { - search(); - break; - } - case 5: - { - insert(); - break; - } - default : - { - printf("\n閫鍑虹郴缁熷苟鎸変换鎰忛敭閫鍑虹郴缁"); - exit(EXIT_SUCCESS); - } - } - - -} - - -void input() -{ - - - char flag[20]; - do - { - printf("璇疯緭鍏ヤ綘鐨勫晢鍝佷俊鎭:\n"); - printf("鍟嗗搧缂栧彿:"); - scanf("%s",goods[count].goods_id); - printf("鍟嗗搧鍚嶅瓧:"); - scanf("%s",goods[count].goods_name); - printf("鍟嗗搧浠锋牸:"); - scanf("%s",goods[count].goods_price); - printf("鍟嗗搧鎶樻墸:"); - scanf("%s",goods[count].goods_discount); - printf("鍟嗗搧鎬绘暟鐩:"); - scanf("%d",&goods[count].goods_amount); - printf("鍟嗗搧鍓╀綑鏁扮洰:"); - scanf("%d",&goods[count].goods_remain); - count++; - printf("鏄惁缁х画杈撳叆鏁版嵁 y鏄 n鍚 : "); - scanf("%s",flag); - }while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0); - output(); -} -void change() -{ - char ch[20],a[20]; - int i,t,m=0; - printf("\n鏄惁鏍规嵁鍟嗗搧鐨勭紪鍙疯繘琛屼慨鏀 (y/n): "); - scanf("%s",ch); - if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) - { - printf("\n杈撳叆鍟嗗搧鐨勭紪鍙:"); - scanf("%s",a); - for(i=0;i Date: Wed, 26 Jun 2019 21:41:21 +0800 Subject: [PATCH 32/35] Add files via upload --- level1/p12_warehouse/12.cpp | 313 ++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 level1/p12_warehouse/12.cpp diff --git a/level1/p12_warehouse/12.cpp b/level1/p12_warehouse/12.cpp new file mode 100644 index 00000000..7c04f8b2 --- /dev/null +++ b/level1/p12_warehouse/12.cpp @@ -0,0 +1,313 @@ +锘#include +#include +#include +#define MAX 10 +void start(); +void output(); +void input(); +void change(); +void dele(); +void search(); +void insert(); +struct GOODS +{ + char goods_id[30]; + char goods_name[30]; + char goods_price[20]; + char goods_discount[20]; + int goods_amount; + int goods_remain; +}; +struct GOODS goods[MAX],goodsinsert[MAX],G[MAX]; +int count=0; +int main() +{ + while(1) + start(); + } +void start() +{ +int ch; +printf("\n\t\t\t\t瓒呭競鍟嗗搧淇℃伅绠$悊绯荤粺\n"); +printf("\t\t\t****************************\n"); +printf("\t\t\t1.鍟嗗搧鐨勫綍鍏n"); +printf("\t\t\t2.淇敼鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t3.鍒犻櫎鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t4.鏌ユ壘鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t5.鎻掑叆鏌愪釜鍟嗗搧鐨勪俊鎭痋n"); +printf("\t\t\t6.閫鍑虹郴缁焅n"); +printf("\t\t\t****************************\n"); +printf("\n\n杈撳叆浣犵殑閫夋嫨锛1-6锛:"); +scanf("%d",&ch); + switch(ch) + { + case 1: + { + input(); + break;} + case 2: + { + change(); + break; + } + case 3: + { + dele(); + break; + } + case 4: + { + search(); + break; + } + case 5: + { + insert(); + break; + } + default : + { + printf("\n閫鍑虹郴缁熷苟鎸変换鎰忛敭閫鍑虹郴缁"); + exit(EXIT_SUCCESS); + } + } + + +} + + +void input() +{ + + + char flag[20]; + do + { + printf("璇疯緭鍏ヤ綘鐨勫晢鍝佷俊鎭:\n"); + printf("鍟嗗搧缂栧彿:"); + scanf("%s",goods[count].goods_id); + printf("鍟嗗搧鍚嶅瓧:"); + scanf("%s",goods[count].goods_name); + printf("鍟嗗搧浠锋牸:"); + scanf("%s",goods[count].goods_price); + printf("鍟嗗搧鎶樻墸:"); + scanf("%s",goods[count].goods_discount); + printf("鍟嗗搧鎬绘暟鐩:"); + scanf("%d",&goods[count].goods_amount); + printf("鍟嗗搧鍓╀綑鏁扮洰:"); + scanf("%d",&goods[count].goods_remain); + count++; + printf("鏄惁缁х画杈撳叆鏁版嵁 y鏄 n鍚 : "); + scanf("%s",flag); + }while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0); + output(); +} +void change() +{ + char ch[20],a[20]; + int i,t,m=0; + printf("\n鏄惁鏍规嵁鍟嗗搧鐨勭紪鍙疯繘琛屼慨鏀 (y/n): "); + scanf("%s",ch); + if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) + { + printf("\n杈撳叆鍟嗗搧鐨勭紪鍙:"); + scanf("%s",a); + for(i=0;i Date: Wed, 26 Jun 2019 21:49:26 +0800 Subject: [PATCH 33/35] Add files via upload --- "\344\272\224\345\255\220\346\243\213cpp.cpp" | 1164 +++++++++++++++++ 1 file changed, 1164 insertions(+) create mode 100644 "\344\272\224\345\255\220\346\243\213cpp.cpp" diff --git "a/\344\272\224\345\255\220\346\243\213cpp.cpp" "b/\344\272\224\345\255\220\346\243\213cpp.cpp" new file mode 100644 index 00000000..fac0141c --- /dev/null +++ "b/\344\272\224\345\255\220\346\243\213cpp.cpp" @@ -0,0 +1,1164 @@ +锘#include +#include +#include//API鍑芥暟澶存枃浠 +#include//鎺у埗鍙拌緭 鍏ヨ緭鍑哄ご鏂囦欢 + +/*鐣岄潰棰滆壊瀹忓畾涔*/ +#define WhiteColor 63 +#define BlackColor 48 +#define Menu 2 +#define ChessBackground 125 +#define ChessBoardColor 48 +#define TipColor 6//缁胯壊 + +HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);//寰楀埌涓涓爣鍑嗙殑杈撳嚭鍙ユ焺 + +char Chess[15][15][3];//妫嬪瀷瀛楃鏁扮粍 + +int type=0;//璁板綍浜轰汉瀵规垬or浜烘満瀵规垬锛宼ype涓0浜轰汉瀵规垬锛宼ype涓1浜烘満瀵规垬锛岄粯璁や负浜轰汉瀵规垬 + +int flag=-1;//璁板綍榛戠櫧妫嬪摢鏂瑰厛钀藉瓙锛宖lag涓0鐧藉瓙锛堢數鑴戯級鍏堬紝flag涓1榛戝瓙锛堢帺瀹讹級鍏 + +int count=0;//璁板綍涓嬫姝ユ暟锛屼竴鍏卞彲涓225姝 + +int status[15][15]={0};//鏍囪瘑褰撳墠浣嶇疆鐘舵侊紝status[i][j]涓0琛ㄦ槑姝や綅缃负绌猴紝status[i][j]涓1琛ㄦ槑涓虹櫧妫嬶紙鐢佃剳锛夛紝status[i][j]涓2琛ㄦ槑褰撳墠浣嶇疆涓洪粦妫嬶紙鐜╁锛 + +int Winner=0;//鏍囪瘑璧㈠锛學inner=1琛ㄦ槑鐧芥锛堢數鑴戯級鑳滐紝Winner=2琛ㄦ槑榛戞锛堢帺瀹讹級鑳 + +int x=40, y=1;//琛ㄧず褰撳墠榧犳爣鐨勪綅缃 + +int prex=0, prey=0;//璁板綍褰撳墠妫嬫墜涓嬫浣嶇疆锛岀敤浜庢倲妫嬪嚱鏁 + +int prex1=0, prey1=0;//璁板綍妫嬫墜涓婁竴姝ヤ笅妫嬬殑浣嶇疆锛岀敤浜庣數鑴戞倲妫嬪弬鏁 + +int Value1[15][15]={0};//鏀诲嚮鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +int Value2[15][15]={0};//闃插畧鏉冨硷紝鐢ㄤ簬鐢佃剳浼樺厛浣嶇疆鍒ゆ柇 + +void GameStart();//涓嬫鍑芥暟 + +void TextColor(int color)//璁剧疆棰滆壊鍑芥暟 +{ + SetConsoleTextAttribute(hOutput,color);//璁剧疆鎺у埗鍙版枃鏈睘鎬 +} + +void ChessBord()//缁樺埗妫嬬洏褰㈢姸 +{ + int i, j; + strcpy(Chess[0][0],"鈹");//璁剧疆妫嬬洏鍥涜 + strcpy(Chess[14][0],"鈹"); + strcpy(Chess[0][14],"鈹"); + strcpy(Chess[14][14],"鈹"); + for(i=1;i<14;i++) + { + strcpy(Chess[i][0],"鈹"); + strcpy(Chess[i][14],"鈹"); + } + for(j=1;j<14;j++) + { + strcpy(Chess[0][j],"鈹"); + strcpy(Chess[14][j],"鈹"); + } + for(i=1;i<14;i++) + for(j=1;j<14;j++) + strcpy(Chess[i][j],"鈹"); +} + +void ShowChessBoard()//杈撳嚭妫嬬洏褰㈢姸 +{ + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + TextColor(ChessBoardColor);//妫嬬洏棰滆壊 + printf("%s",Chess[i][j]); + //printf(" "); // win10鐜闇瑕佹坊鍔犺璇彞锛屽惁鍒欑晫闈㈡樉绀烘湁闂 + } + printf("\n"); + } +} + +void getto(int x,int y)//鍏夋爣鍑芥暟 +{ + COORD cursor={0,0};//瀹氫箟涓涓厜鏍囧璞 + cursor.X=x; + cursor.Y=y; + SetConsoleCursorPosition(hOutput,cursor);//璁剧疆鍏夋爣浣嶇疆 +} + +void ChooseFirst() //鍏堟墜鍑芥暟锛岀‘瀹氫汉浜/鏈烘ā寮忎互鍙婂厛鍚庢墜 +{ + switch(y) + { + case 3: + { + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐧藉瓙鍏堟墜"); + getto(x,y+2); + printf("2.榛戝瓙鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break;//涓 + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break;//涓 + case 13:if(y==3) flag=0;else flag=1; break;//flag=0 鐧藉瓙鍏堟墜 flag=1 榛戝瓙鍏堟墜 + case 'e':case 'E':case 27: + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + case 5: + { + type=1; //浜烘満瀵规垬妯″紡 + TextColor(TipColor);//璁剧疆鎻愮ず鐨勯鑹 + x=50,y=3;getto(x,y); + printf("1.鐢佃剳鍏堟墜"); + getto(x,y+2); + printf("2.鐜╁鍏堟墜"); + getto(x,y); + while(1) + { + switch(getch()) + { + case '1': + flag=0;break; + case '2': + flag=1;break; + case 72:if(y<=3)y=3;else y-=2;getto(x,y);break; + case 80:if(y>=5)y=5;else y+=2;getto(x,y);break; + case 13:if(y==3) flag=0;else flag=1;break; //flag=0 鐢佃剳鍏堟墜 flag=1 鐜╁鍏堟墜 + case 'e':case 'E': + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + { + getto(36,15); + exit(0); + } + }break;//鎻愬墠缁堟姣旇禌 + default:break; + } + if(flag!=-1) + break;//閫夋嫨濂藉厛鍚庢墜锛岃烦鍑哄惊鐜 + } + }break; + default: + break; + } +} + +void ShowMenu()//杈撳嚭鑿滃崟閫夐」锛岀敤鎴峰彲瑙嗗寲鐣岄潰 +{ + getto(40,1); + TextColor(Menu); + printf("娆㈣繋浣跨敤浜斿瓙妫"); + getto(36,3); + printf("1.浜轰汉瀵规垬"); + getto(36,5); + printf("2.浜烘満瀵规垬"); + getto(36,7); + printf("B鎮旀(鎸夊揩鎹烽敭B鍗冲彲瀹炶鎮旀)"); + getto(36,9); + printf("E閫鍑(鎸夊揩鎹烽敭E鍗冲彲瀹炶閫鍑)"); + getto(36,11); + printf("R閲嶆柊寮濮(鎸夊揩鎹烽敭R鍗冲彲瀹炶閲嶆柊寮濮)"); + getto(0,16); + printf(" 鎿嶄綔璇存槑锛歕n\n"); + printf("1.鐢ㄦ埛搴斿厛閫夋嫨娓告垙妯″紡锛屽彲浠ユ寜蹇嵎閿'1'銆'2'杩涜閫夋嫨锛屼篃鍙氳繃绉诲姩鍏夋爣瀹炵幇\n\n2.纭畾涓嬫浣嶇疆鍙寜鈫戙佲啌銆佲啇銆佲啋涓姝ユ绉诲姩鍏夋爣,涔熷彲鎸'W'锛堝揩閫熷埌鍒楅锛夈'S'锛堝揩閫熷埌鍒楀熬锛夈'A'锛堝揩閫熷埌琛岄锛夈'D'锛堝揩閫熷埌琛屽熬锛塡n\n3.鎸塭nter纭畾钀藉瓙锛屽悓鏃舵湰娓告垙鎻愪緵鐩稿簲蹇嵎閿搷浣滐紙璇﹁妫嬬洏鍙充晶锛"); + x=36,y=3; + getto(x,y); + while(1) + { + if(flag!=-1) + break; + switch(getch())//浠庢帶鍒跺彴鏃犲洖鏄惧湴鍙栦竴涓瓧绗 + { + case '1': + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case '2': + { + y=5; + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 72: + { + if(y<=3)y=3;else y-=2;//鎺у埗鍏夋爣涓嶄笂瓒呯涓夎 + getto(x,y); + }break; + case 80: + { if(y>=5)y=5;else y+=2;//鎺у埗鍏夋爣涓嶄笅瓒呯浜旇 + getto(x,y); + }break; + case 13: + { + ChooseFirst(); //璋冪敤鍏堟墜鍑芥暟 + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁閫鍑猴紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + continue; + if(IDOK==message) + {getto(36,15);exit(0);} + }break;//鎻愬墠缁堟姣旇禌 + default: + break; + } + + }//while缁撴潫锛屽緱鍒扮敤鎴风殑閫夋嫨缁撴灉锛屽嵆浣曟柟鍏堜笅 +} + +void showplayer()//鏄剧ず鍝柟鎵у瓙 +{ + + TextColor(TipColor); + if(type==0)//浜轰汉妯″紡 + { + if(count%2==flag) + printf("鐧藉瓙鎵ф墜"); + else + printf("榛戝瓙鎵ф墜"); + } + else //浜烘満妯″紡 + { + if(count%2==flag) + printf("鐢佃剳鎵ф墜"); + else + printf("鐜╁鎵ф墜"); + } +} + +void WhiteChess(int x,int y)//杈撳嚭鐧芥瀛 +{ + getto(x,y); + TextColor(WhiteColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +void BlackChess(int x,int y)//杈撳嚭榛戞瀛 +{ + getto(x,y); + TextColor(BlackColor); + printf("鈼"); + prex1=prex; + prey1=prey; + prex=x; //淇濆瓨鍓嶄竴娆′笅妫嬩綅缃紝鏂逛究鎮旀 + prey=y; +} + +int ResultCheck(int x,int y,int player) //鍒ゆ柇鏄惁鏈変汉鑳滃埄锛岃嫢鏈変汉鑾疯儨鍒欒繑鍥瀙layer,鍙嶄箣杩斿洖0 +{ + int n1, n2; + int i, j; + n1=n2=0; + for(i=x,j=y;j>=0;j--)//寰宸︽暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x,j=y+1;j<15;j++)//寰鍙虫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0;i--)//寰涓婃暟 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y;i<15;i++)//寰涓嬫暟 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i>=0&&j>=0;i--,j--)//寰宸︿笂鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x+1,j=y+1;i<15&&j<15;i++,j++)//寰鍙充笅鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + n1=n2=0; + for(i=x,j=y;i<15&&j>=0;i++,j--)//寰宸︿笅鏁 + { + if(status[i][j]==player) + n1++; + else + break; + } + for(i=x-1,j=y+1;i>=0&&j<15;i--,j++)//寰鍙充笂鏁 + { + if(status[i][j]==player) + n2++; + else + break; + } + if(n1+n2>=5) //鑻ヨ繛鎴愪簲瀛愶紝娓告垙缁撴潫 + return player; + return 0; //鏈湁浜斿瓙杩炴垚 +} + +void Back()//鎮旀鍑芥暟 +{ + if(status[prey][prex/2])//閬垮厤鐢ㄦ埛澶氭鎮旀 + { + status[prey][prex/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex,prey); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey][prex/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex,prey); + } +} + +void Back1()//鎮旀鍑芥暟2锛屽綋杩涜浜烘満瀵规垬鏃惰皟鐢 +{ + if(status[prey1][prex1/2])//閬垮厤鐢ㄦ埛澶氭鎮 妫 + { + status[prey1][prex1/2]=0;//灏嗚浣嶇疆鐘舵佹爣涓0 + getto(prex1,prey1); + TextColor(ChessBoardColor);//灏嗚浣嶇疆鐨勬瀛愯鐩栨帀 + printf("%s",Chess[prey1][prex1/2]);//閲嶆柊缁樺埗璇ヤ綅缃殑琛ㄦ牸 + count--;//涓嬫姝ユ暟鑷噺 + getto(prex1,prey1); + } +} + +void ShowResult()//杈撳嚭涓嬫缁撴灉 +{ + getto(36,15); + if(count>=225) + printf("骞冲眬锛"); + if(type==0) //浜轰汉瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"鐧藉瓙鍚涙妫掑搾~~鎴樿儨浜嗛粦瀛愬悰~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"榛戝瓙鍚涙妫掑搾~~鎴樿儨浜嗙櫧瀛愬悰~~O(鈭鈭)O~~","浜斿瓙妫嬫父鎴",MB_OK); + } + else //浜烘満瀵规垬妯″紡 + { + if(Winner==1) + MessageBox(NULL,"浜诧紝浣犵珶鐒惰緭缁欎簡鐢佃剳锛屽洖瀹舵礂娲楃潯鍚э紒%>_<%","浜斿瓙妫嬫父鎴",MB_OK); + if(Winner==2) + MessageBox(NULL,"浜诧紝浣犲お鍘夊浜嗭紝浣犵珶鐒跺彲浠ユ垬鑳滅數鑴戯紒\^鈼嘵/","浜斿瓙妫嬫父鎴",MB_OK); + } +} + +void save()//淇濆瓨娈嬪眬 +{ + int i,j; + char str[4]; + FILE *fp=fopen("data.txt","w");//鎵撳紑鏂囦欢锛屾妸status[i][j]銆乼ype銆乫lag銆乧ount鍐欏叆data.txt鏂囦欢 + if(fp==NULL) + { + printf("淇濆瓨娈嬪眬澶辫触"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + fputc(status[i][j]+'0',fp); + fputc(type+'0',fp); + fputc(flag+'0',fp); + itoa(count,str,10);//灏嗘暣鏁拌浆鎹㈡垚瀛楃涓诧紝骞剁粰鍑鸿繘鍒舵暟 + fputs(str,fp); + fclose(fp); +} + +void Continue() +{ + int i, j; + char str[4]; + FILE *fp=fopen("data.txt","r");//鎵撳紑鏂囦欢璇诲嚭鐩稿簲鏁版嵁 + if(fp==NULL) + { + printf("鎭㈠娈嬪眬澶辫触......"); + } + for(i=0;i<15;i++) + for(j=0;j<15;j++) + status[i][j]=fgetc(fp)-'0'; + type=fgetc(fp)-'0'; + flag=fgetc(fp)-'0'; + char ch=fgetc(fp); + i=0; + while(ch!=EOF) + { + str[i++]=ch; + ch=fgetc(fp); + } + str[i]='\0'; + fclose(fp); + count=atoi(str);//灏嗗瓧绗︿覆杞崲鎴愭暣鏁 + for(i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(status[i][j]==1) + WhiteChess(2*j,i); + if(status[i][j]==2) + BlackChess(2*j,i); + } +} + +void ValueJudgeAttack() //杩涙敾鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value1[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=y;i1<15;i1++)//寰涓嬫暟瀵绘壘鐢佃剳妫嬪瓙鏁 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1? k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1 ) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]== 1) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧數鑴戞瀛愭暟 + { + if(status[i1][j1]==1) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value[i][j]=3 + { //k=1,Value[i][j]=5 + case 3: //k=2, Value[i][j]=7 + Value1[i][j]=15;break; //k=3,Value[i][j]=15 + case 4: + Value1[i][j]=25;break; //k=4,Value[i][j]=25 + default: + Value1[i][j]=3+2*k;break; + } + }//end of if + }//end of second for + }//end of first for +}//end of the function + +void ValueJudgeDefend()//闃插尽鏉冨煎嚱鏁帮紝纭畾褰撳墠浣嶇疆鐨勪紭鍏堢骇 +{ + int i1, j1; + int k1,k2,k; + for(int i=0;i<15;i++) + { + for(int j=0;j<15;j++) + { + if(status[i][j]) + Value2[i][j]=0; + if(status[i][j]==0) + { + k1=k2=0; + for(i1=i,j1=j-1;j1>=0;j1--)//寰宸︽暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i,j1=j+1;j1<15;j1++)//寰鍙虫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k=k1>k2? k1:k2; + k1=k2=0; + for(i1=i-1,j1=j;i1>=0;i1--)//寰涓婃暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j;i1<15;i1++)//寰涓嬫暟瀵绘壘鐜╁妫嬪瓙鏁 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i-1,j1=j-1;i1>=0&&j1>=0;i1--,j1--)//寰宸︿笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i+1,j1=j+1;i1<15&&j1<15;i1++,j1++)//寰鍙充笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + k1=k2=0; + for(i1=i+1,j1=j-1;i1<15&&j1>=0;i1++,j1--)//寰宸︿笅鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k1++; + else + break; + } + for(i1=i-1,j1=j+1;i1>0&&j1<15;i1--,j1++)//寰鍙充笂鏁板鎵剧帺瀹舵瀛愭暟 + { + if(status[i1][j1]==2) + k2++; + else + break; + } + k1=k1>k2? k1:k2; + k=k>k1?k:k1; + switch(k) //k=0,Value2[i][j]=2 + { //k=1,Value2[i][j]=4 + case 3: //k=2,Value2i][j]=6 + Value2[i][j]=10;break; //k=3,Value2[i][j]=10 + case 4: //k=4,Value2[i][j]=20 + Value2[i][j]=20;break; + default: + Value2[i][j]=2+k*2; + } + } + } + } +} + +void FindPosition()//鎵惧埌鏈鏈変环鍊肩殑浣嶇疆 +{ + int k1=0, k2=0; + int i, j, max=0; + for( i=0;i<15;i++) + for( j=0;j<15;j++) + { + if(max<=Value1[i][j]) + { + max=Value1[i][j]; + k1=i; + k2=j; + } + } + for( i=0;i<15;i++) + for(j=0;j<15;j++) + { + if(max<=Value2[i][j]) + { + max=Value2[i][j]; + k1=i; + k2=j; + } + } + x=2*k2; //灏嗘壘鍒扮殑浣嶇疆浼犵粰鍏夋爣 + y=k1; +} + +void MantoMan() //浜轰汉妯″紡 +{ + while(1)//褰撴湁浜鸿幏鑳滐紝璺冲嚭寰幆锛岀粨鏉熸父鎴 + { + getto(36,13); //杈撳嚭褰撳墠涓嬫鏂 + showplayer(); + getto(x,y); //鍏夋爣璺冲埌妫嬬洏涓ぎ + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + Back();//璋冪敤鎮旀鍑芥暟 + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2==flag) //flag涓0鏃讹紝鐧芥鍏堜笅锛沠lag涓1鏃讹紝榛戞鍏堜笅 + { + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + else + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦鑿滃崟閫夐」 + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer1()//浜烘満妯″紡锛岀數鑴戝厛涓 +{ + x=14,y=7; + WhiteChess(x,y); //鐢佃剳鍏堜笅锛屼笖绗竴瀛愯惤鍦ㄦ鐩樹腑澶 + getto(x,y); + status[y][x/2]=1; + count++; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鈫戝厜鏍囦笂绉 + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鈫撳厜鏍囦笅绉 + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + if(count<=1) + continue; + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓0鐜╁鍚庝笅锛屼笖涓嬪畬鍚庣數鑴戞帴鐫涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + }break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 + } + +void MantoComputer2()//浜烘満妯″紡锛岀帺瀹跺厛涓 +{ + x=14,y=7; + while(1) + { + getto(36,13); + showplayer(); + getto(x,y); + switch(getch()) + { + case 72: //鍏夋爣涓婄Щ + { + if(y>0) + y-=1; + getto(x,y); + }break; + case 80: //鍏夋爣涓嬬Щ + { + if(y<14) + y+=1; + getto(x,y); + }break; + case 75: //鍏夋爣宸︾Щ + { + if(x>=2) + x-=2; + getto(x,y); + }break; + case 77: //鍏夋爣鍙崇Щ + { + if(x<28) + x+=2; + getto(x,y); + }break; + case 'A':case 'a': //鍏夋爣绉诲埌琛岄 + { + x=0; + getto(x,y); + }break; + case 'D':case 'd': //鍏夋爣绉诲埌琛屽熬 + { + x=28; + getto(x,y); + }break; + case 'W':case 'w': //鍏夋爣绉诲埌鍒楅 + { + y=0; + getto(x,y); + }break; + case 'S':case 's': //鍏夋爣绉诲埌鍒楀熬 + { + y=14; + getto(x,y); + }break; + case 'b':case 'B': //鎮旀 + { + int message=MessageBox(NULL,"鏄惁纭畾鎮旀锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + Back(); //璋冪敤鎮旀鍑芥暟 + Back1(); //璋冪敤鎮旀鍑芥暟 + } + }break; + case 13: //enter閿紝鍦ㄥ綋鍓嶅厜鏍囦綅缃惤妫 + { + if(count%2!=flag) //flag涓1鐜╁鍏堜笅锛屼笖涓嬪畬鍚庣數鑴戝啀涓 + { + if(status[y][x/2]==0) + { + BlackChess(x,y); + getto(x,y); + status[y][x/2]=2;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负2 + count++; + Winner=ResultCheck(y,x/2,2); + if(Winner==2) + break; + ValueJudgeAttack(); + ValueJudgeDefend(); + FindPosition(); + if(status[y][x/2]==0) + { + WhiteChess(x,y); + getto(x,y); + status[y][x/2]=1;//鏀瑰彉璇ヤ綅缃殑鐘舵佸间负1 + count++; + Winner=ResultCheck(y,x/2,1); + } + } + } + }break; + case 'r':case 'R': //鎵鏈夌姸鎬佸彉閲忛噸鏂扳滃垵濮嬪寲鈥 + { + int message=MessageBox(NULL,"鏄惁閲嶆柊寮濮嬶紵","鍙嬫儏鎻愮ず锛",MB_OKCANCEL); + if(IDCANCEL==message) + break; + if(IDOK==message) + { + for(int i=0;i<15;i++)//妫嬬洏鐘舵佸叏涓虹┖ + for(int j=0;j<15;j++) + status[i][j]=0; + flag=-1; + type=0; + count=0; + Winner=0; + getto(0,0); + system("cls"); + ChessBord(); + ShowChessBoard(); + ShowMenu(); + getto(36,3);//鍏夋爣绉昏嚦妫嬬洏涓ぎ + GameStart(); + } + }break; + case 'e':case 'E':case 27://鎻愬墠缁堟姣旇禌 + { + int message=MessageBox(NULL,"鏄惁淇濆瓨锛","鍙嬫儏鎻愮ず",MB_YESNOCANCEL); + if(IDYES==message) + { + save(); + MessageBox(NULL,"鎭枩浣狅紝宸叉垚鍔熶繚瀛橈紒","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + if(IDCANCEL==message) + MessageBox(NULL,"缁х画娓告垙","鍙嬫儏鎻愮ず",MB_OK); + if(IDNO==message) + { + MessageBox(NULL,"娌℃湁淇濆瓨锛屾垚鍔熼鍑","鍙嬫儏鎻愮ず",MB_OK); + getto(36,15); + exit(0); + } + };break; + default: + break; + + } + if(count>=225) + break; + if(Winner) + break; + }//while缁撴潫锛屼笅妫嬬粨鏋滃凡鍑烘潵 +} + +void GameStart()//涓嬫鍑芥暟 +{ + x=14,y=7; + getto(x,y); + if(type==0) + MantoMan(); //浜轰汉妯″紡 + else + { + if(flag==0) + MantoComputer1();//鐢佃剳鍏堟墜 + if(flag==1) + MantoComputer2();//鐜╁鍏堟墜 + } + ShowResult(); //鏄剧ず娓告垙缁撴灉 +} + +int main() +{ + FILE *fp=fopen("data.txt","r");//瀹氫箟涓涓枃浠舵寚閽堟寚鍚戞暟鎹繚瀛樻枃浠 + ChessBord();//缁樺埗妫嬬洏 + system("cls");//瀹炵幇娓呭睆 + ShowChessBoard();//杈撳嚭妫嬬洏 + char ch=fgetc(fp); + fclose(fp); + if(ch!=EOF) //鍒ゆ柇鏂囦欢鏄惁涓虹┖锛岃嫢闈炵┖鍒欒〃鏄巇ata.txt鏂囦欢閲屾湁鏁版嵁 + { + int message=MessageBox(NULL,"妫娴嬪埌鎮ㄤ笂娆′簲瀛愭杩樻病鏈変笅瀹岋紝鏄惁缁х画锛","鍙嬫儏鎻愮ず",MB_OKCANCEL); + if(IDCANCEL==message) + { + fp=fopen("data.txt","w");//鑻ョ敤鎴峰彇娑堟仮澶嶆畫灞锛屽垯瀵瑰師鏁版嵁鏂囦欢杩涜鏀瑰啓瑕嗙洊锛岄伩鍏嶅娆℃彁閱掔敤鎴锋仮澶嶆畫灞 + fclose(fp); + } + if(IDOK==message) + { + Continue();//璋冪敤鎭㈠娈嬪眬鍑芥暟 + ShowMenu();//杈撳嚭鑿滃崟 + x=14,y=7; + getto(14,7); + if(type==0) //鏍规嵁瀵瑰師鏁版嵁鐨勫垽鏂紝鎭㈠娓告垙鐜板満锛屽嵆娓告垙妯″紡銆佸厛鍚庢墜闂 + { + MantoMan(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2==flag)) + { + MantoComputer1(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + if(type==1&&(count%2!=flag)) + { + MantoComputer2(); + ShowResult(); //鏄剧ず娓告垙缁撴灉 + } + fp=fopen("data.txt","w");//鎭㈠娈嬪眬鍚庡簲鍙婃椂瀵瑰鍘熸暟鎹枃浠惰繘琛屾敼鍐欒鐩栵紝閬垮厤澶氭鎻愰啋鐢ㄦ埛鎭㈠娈嬪眬 + fclose(fp); + } + } + if(!Winner) + { + ShowMenu();//杈撳嚭鑿滃崟 + getto(36,3); + GameStart();//寮濮嬫父鎴*/ + } + return 0; +} From 07311d7f1d4dff76c4ea713e4b21dd46a8667597 Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:50:02 +0800 Subject: [PATCH 34/35] =?UTF-8?q?Update=20=E4=BA=94=E5=AD=90=E6=A3=8Btxt.t?= =?UTF-8?q?xt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\344\272\224\345\255\220\346\243\213txt.txt" | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git "a/\344\272\224\345\255\220\346\243\213txt.txt" "b/\344\272\224\345\255\220\346\243\213txt.txt" index 422ebcad..4fe617b3 100644 --- "a/\344\272\224\345\255\220\346\243\213txt.txt" +++ "b/\344\272\224\345\255\220\346\243\213txt.txt" @@ -1,4 +1,11 @@ -锘#include +杩欎釜鏂囦欢涔熸槸.txt (銉庛伕锟c)锛岀敱浜庡疄楠屾姤鍛婂凡缁忔彁浜や簡锛岀綉鍧娌℃硶鏀逛簡(掳銉悸般)锛 +鎴戝氨鎶.c缃戝潃鏀惧湪杩欓噷甯屾湜鑰佸笀鑳界湅瑙(銆傦箯銆*) +https://github.com/lzysb/c2019/blob/master/%E4%BA%94%E5%AD%90%E6%A3%8Bcpp.cpp +璋㈣阿鑰佸笀锛侊紒锛 + + + +#include #include #include//API鍑芥暟澶存枃浠 #include//鎺у埗鍙拌緭 鍏ヨ緭鍑哄ご鏂囦欢 @@ -1161,4 +1168,4 @@ int main() GameStart();//寮濮嬫父鎴*/ } return 0; -} \ No newline at end of file +} From a8d0c59d77ed5c59d4c64d0b69031ef04d2b9b8f Mon Sep 17 00:00:00 2001 From: lzysb <48143154+lzysb@users.noreply.github.com> Date: Wed, 26 Jun 2019 21:51:00 +0800 Subject: [PATCH 35/35] =?UTF-8?q?Update=20=E4=BA=94=E5=AD=90=E6=A3=8Btxt.t?= =?UTF-8?q?xt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\344\272\224\345\255\220\346\243\213txt.txt" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/\344\272\224\345\255\220\346\243\213txt.txt" "b/\344\272\224\345\255\220\346\243\213txt.txt" index 4fe617b3..d245d5d8 100644 --- "a/\344\272\224\345\255\220\346\243\213txt.txt" +++ "b/\344\272\224\345\255\220\346\243\213txt.txt" @@ -1,7 +1,7 @@ 杩欎釜鏂囦欢涔熸槸.txt (銉庛伕锟c)锛岀敱浜庡疄楠屾姤鍛婂凡缁忔彁浜や簡锛岀綉鍧娌℃硶鏀逛簡(掳銉悸般)锛 鎴戝氨鎶.c缃戝潃鏀惧湪杩欓噷甯屾湜鑰佸笀鑳界湅瑙(銆傦箯銆*) https://github.com/lzysb/c2019/blob/master/%E4%BA%94%E5%AD%90%E6%A3%8Bcpp.cpp -璋㈣阿鑰佸笀锛侊紒锛 +璋㈣阿鑰佸笀锛侊紒锛佽繖涓鏈熷鍒颁簡寰堝璇炬湰涓婂涓嶅埌鐨勪笢瑗匡紒锛