From: b Date: Sun, 19 Apr 2015 16:29:00 +0000 (+0200) Subject: Kreatury 3000 X-Git-Url: http://bicyclesonthemoon.info/git-projects/?a=commitdiff_plain;ds=inline;p=kreatury3000 Kreatury 3000 --- 29aa371a96c9e4040436983901a21f96a33eda57 diff --git a/kreatury-2serduszka.c b/kreatury-2serduszka.c new file mode 100644 index 0000000..980869a --- /dev/null +++ b/kreatury-2serduszka.c @@ -0,0 +1,273 @@ +#include +#include +#include +#include + +struct kreatura +{ + char nazwa[256]; + unsigned short atak; + unsigned short obrona; + unsigned short hp; + unsigned char zabity; + unsigned char okaleczony; +}; + +unsigned short kostka(); +unsigned char atak(struct kreatura *gracz1, struct kreatura *gracz2, unsigned char *krytyk, unsigned char interakt); +unsigned char walka(struct kreatura *gracz1, struct kreatura *gracz2, unsigned char interakt); +int main(int argc, char *argv[]); + + + +unsigned short kostka() +{ + return rand()%6+1; +} + +unsigned char atak(struct kreatura *gracz1, struct kreatura *gracz2, unsigned char *krytyk, unsigned char interakt) +{ + unsigned short atak_k, obrona_k, atak_n, obrona_n; + + atak_k=kostka(); + obrona_k=kostka(); + + atak_n = gracz1->atak + atak_k; + obrona_n = gracz2->obrona + obrona_k; + + if(interakt) + printf("Atakuje %s\n Atak: %hu + %hu = %hu.\n Obrona:%hu + %hu = %hu.\n", + gracz1->nazwa, + atak_k, + gracz1->atak, + atak_n, + obrona_k, + gracz2->obrona, + obrona_n); + + if(atak_k==6) + { + if(interakt) + printf("%s","Trafia krytycznie"); + ++(*krytyk); + if((*krytyk) > 1) + { + if(interakt) + printf("%s"," i zabija"); + gracz2->hp=0; + gracz2->zabity=1; + } + else + --(gracz2->hp); + } + else + { + + if(atak_n > obrona_n) + { + if(interakt) + printf("%s","Trafia"); + if(*krytyk) + { + if(interakt) + printf("%s"," i okalecza"); + gracz2->hp=0; + gracz2->okaleczony=1; + } + else + --(gracz2->hp); + } + else + { + if(interakt) + printf("%s","Nie trafia"); + } + (*krytyk)=0; + } + if(gracz2->hp==0 && (!(*krytyk) || gracz2->okaleczony || gracz2->zabity) ) + { + if(interakt) + printf(", %s wygrywa.\n\n",gracz1->nazwa); + return 1; + } + else + { + if (interakt) + printf(", %s ma %hu hp.\n\n",gracz2->nazwa,gracz2->hp); + return 0; + } +} + + +unsigned char walka(struct kreatura *gracz1, struct kreatura *gracz2, unsigned char interakt) +{ + unsigned char pierwszy=0; + unsigned char krytyk=0; + unsigned short runda; + + struct kreatura *atakuje, *broni; + + gracz1->hp=2; + gracz2->hp=2; + gracz1->zabity=0; + gracz2->zabity=0; + gracz1->okaleczony=0; + gracz2->okaleczony=0; + + for(runda=1;1;++runda) + { + if(interakt) + { + getch(); + printf("RUNDA %hu\n\n",runda); + } + + if(!pierwszy) + { + atakuje=gracz1; + broni=gracz2; + } + else + { + atakuje=gracz2; + broni=gracz1; + } + + if(atak(atakuje, broni, &krytyk, interakt)) + return pierwszy; + + if(!krytyk) + pierwszy=!pierwszy; + } +} + +int main(int argc, char *argv[]) +{ + struct kreatura gracz1; + struct kreatura gracz2; + char wy; + + unsigned long symulacje; + unsigned long iter; + unsigned long wygrane1; + unsigned long wygrane2; + unsigned long zabity1; + unsigned long zabity2; + unsigned long okaleczony1; + unsigned long okaleczony2; + + char napis[256]; + + srand (time (NULL) + getpid()); + setvbuf(stdout, NULL, _IONBF, 0); + //setvbuf(stdin, NULL, _IONBF, 0); + + printf("%s", "KREATURY 3000 - walki na 2 serduszka"); + + while(1) + { + printf("%s","\n\n A - Interaktywna walka\n B - Symulacje\n"); + do + { + wy=getch(); + wy|=0x20; + }while ((wy!='a')&&(wy!='b')); + + if(wy=='b') + { + printf("%s", "\nliczba symulacji: "); + scanf("%lu", &symulacje); + } + + fflush(stdin); + printf("%s","\nGracz1:\n"); + if(wy!='b') + { + printf("%s","nazwa: "); + gets(gracz1.nazwa); + } + printf("%s","atak: "); + scanf("%s",napis); + gracz1.atak=atoi(napis); + printf("%s","obrona:"); + scanf("%s",napis); + gracz1.obrona=atoi(napis); + + fflush(stdin); + printf("%s","\nGracz2:\n"); + if(wy!='b') + { + printf("%s","nazwa: "); + gets(gracz2.nazwa); + } + printf("%s","atak: "); + scanf("%s",napis); + gracz2.atak=atoi(napis); + printf("%s","obrona:"); + scanf("%s",napis); + gracz2.obrona=atoi(napis); + printf("%c",'\n'); + + fflush(stdin); + + if(wy=='b') + { + + printf("%s","\nSYMULACJA:"); + wygrane1=0; + wygrane2=0; + zabity1=0; + zabity2=0; + okaleczony1=0; + okaleczony2=0; + for(iter=0;iter +#include +#include +#include +#include +#include + +struct kreatura +{ + char nazwa[256]; + unsigned short atak; + unsigned short obrona; + unsigned short hp; + unsigned char zabity; + unsigned char okaleczony; + unsigned char boss; +}; + +unsigned short kostka(); + +unsigned char atak( + struct kreatura *gracz1, + struct kreatura *gracz2, + unsigned char *krytyk, + unsigned char interakt); + +unsigned char walka( + struct kreatura *gracz1, + struct kreatura *gracz2, + unsigned short hp, + unsigned char interakt); + +int main( + int argc, + char *argv[]); + +unsigned short kostka() +{ + return rand()%6+1; +} + +unsigned char atak( + struct kreatura *gracz1, + struct kreatura *gracz2, + unsigned char *krytyk, + unsigned char interakt) +{ + unsigned short atak_k, obrona_k, atak_n, obrona_n; + + atak_k=kostka(); + obrona_k=kostka(); + + atak_n = gracz1->atak + atak_k; + obrona_n = gracz2->obrona + obrona_k; + + if(interakt) + fprintf(stdout, + "Atakuje %s\n Atak: %hu + %hu = %hu.\n Obrona:%hu + %hu = %hu.\n", + gracz1->nazwa, + atak_k, + gracz1->atak, + atak_n, + obrona_k, + gracz2->obrona, + obrona_n); + + if(atak_k==6) + { + if(interakt) + fputs("Trafia krytycznie",stdout); + ++(*krytyk); + if(((*krytyk) > 1) || (gracz1->boss)) + { + if(interakt) + fputs(" i zabija",stdout); + gracz2->hp=0; + gracz2->zabity=1; + } + else + --(gracz2->hp); + } + else + { + + if(atak_n > obrona_n) + { + if(interakt) + fputs("Trafia",stdout); + if(*krytyk) + { + if(interakt) + fputs(" i okalecza",stdout); + gracz2->hp=0; + gracz2->okaleczony=1; + } + else + --(gracz2->hp); + } + else + { + if(interakt) + fputs("Nie trafia",stdout); + } + (*krytyk)=0; + } + if(gracz2->hp==0 && (!(*krytyk) || gracz2->okaleczony || gracz2->zabity) ) + { + if(interakt) + fprintf(stdout,", %s wygrywa.\n\n",gracz1->nazwa); + return 1; + } + else + { + if (interakt) + fprintf(stdout,", %s ma %hu hp.\n\n",gracz2->nazwa,gracz2->hp); + return 0; + } +} + +unsigned char walka( + struct kreatura *gracz1, + struct kreatura *gracz2, + unsigned short hp, + unsigned char interakt) +{ + unsigned char pierwszy=0; + unsigned char krytyk=0; + unsigned short runda; + + struct kreatura *atakuje, *broni; + + if(!(gracz1->boss)) + gracz1->hp=hp; + if(!(gracz2->boss)) + gracz2->hp=hp; + gracz1->zabity=0; + gracz2->zabity=0; + gracz1->okaleczony=0; + gracz2->okaleczony=0; + + for(runda=1;1;++runda) + { + if(interakt) + { + getch(); + fprintf(stdout,"RUNDA %hu\n\n",runda); + } + + if(!pierwszy) + { + atakuje=gracz1; + broni=gracz2; + } + else + { + atakuje=gracz2; + broni=gracz1; + } + + if(atak(atakuje, broni, &krytyk, interakt)) + return pierwszy; + + if(!krytyk) + pierwszy=!pierwszy; + } +} + +int main( + int argc, + char *argv[]) +{ + struct kreatura gracz1; + struct kreatura gracz2; + char wy; + + unsigned short l; + unsigned short serduszka; + + unsigned long symulacje; + unsigned long iter; + unsigned long wygrane1; + unsigned long wygrane2; + unsigned long zabity1; + unsigned long zabity2; + unsigned long okaleczony1; + unsigned long okaleczony2; + + char napis[256]; + + srand (time (NULL) + getpid()); + setvbuf(stdout, NULL, _IONBF, 0); + //setvbuf(stdin, NULL, _IONBF, 0); + + fputs("KREATURY 3000",stdout); + + while(1) + { + fputs("\n\n A - Walka - 2\n B - Walka - 3\n C - Boss - 2\n D - Boss - 3\n E - Symulacje - 2\n F - Symulacje - 3\n",stdout); + do + { + wy=getch(); + wy|=0x20; + }while (wy<'a'||wy>'f'); + + fflush(stdin); + if(wy=='f'||wy=='e') + { + fputs("\nliczba symulacji: ",stdout); + fgets(napis,256,stdin); + symulacje=atol(napis); + } + + if(wy=='a'||wy=='e'||wy=='c') + serduszka=2; + else + serduszka=3; + + if(wy=='c'||wy=='d') + { + gracz2.boss=1; + gracz2.hp=serduszka; + fputs("\nboss:\n",stdout); + fputs("nazwa: ",stdout); + fgets(gracz2.nazwa,256,stdin); + l=strlen(gracz2.nazwa)-1; + if(gracz2.nazwa[l]=='\n') + gracz2.nazwa[l]='\0'; + + fputs("atak: ",stdout); + fgets(napis,256,stdin); + gracz2.atak=atoi(napis); + + fputs("obrona:",stdout); + fgets(napis,256,stdin); + gracz2.obrona=atoi(napis); + } + else + { + gracz1.boss=0; + fputs("\nGracz1:\n",stdout); + if(wy=='b'||wy=='a') + { + fputs("nazwa: ",stdout); + fgets(gracz1.nazwa,256,stdin); + l=strlen(gracz1.nazwa)-1; + if(gracz1.nazwa[l]=='\n') + gracz1.nazwa[l]='\0'; + } + + fputs("atak: ",stdout); + fgets(napis,256,stdin); + gracz1.atak=atoi(napis); + + fputs("obrona:",stdout); + fgets(napis,256,stdin); + gracz1.obrona=atoi(napis); + + gracz2.boss=0; + fputs("\nGracz2:\n",stdout); + if(wy=='b'||wy=='a') + { + fputs("nazwa: ",stdout); + fgets(gracz2.nazwa,256,stdin); + l=strlen(gracz2.nazwa)-1; + if(gracz2.nazwa[l]=='\n') + gracz2.nazwa[l]='\0'; + } + + fputs("atak: ",stdout); + fgets(napis,256,stdin); + gracz2.atak=atoi(napis); + + fputs("obrona:",stdout); + fgets(napis,256,stdin); + gracz2.obrona=atoi(napis); + fputs("\n",stdout); + } + + fflush(stdin); + + if(wy=='c'||wy=='d') + { + for(iter=1; gracz2.hp>0; ++iter) + { + gracz1.boss=0; + fprintf(stdout,"\nGracz%lu:\n",iter); + + fputs("nazwa: ",stdout); + fgets(gracz1.nazwa,256,stdin); + l=strlen(gracz1.nazwa)-1; + if(!l) + { + fprintf(stdout,"\n%s wygrywa.\n\n",gracz2.nazwa); + break; + } + if(gracz1.nazwa[l]=='\n') + gracz1.nazwa[l]='\0'; + + fputs("atak: ",stdout); + fgets(napis,256,stdin); + gracz1.atak=atoi(napis); + + fputs("obrona:",stdout); + fgets(napis,256,stdin); + gracz1.obrona=atoi(napis); + + fputs("\n\nWALKA:\n\n",stdout); + walka(&gracz1, &gracz2, 1, 1); + getch(); + } + } + + else if(wy=='f'||wy=='e') + { + + printf("%s","\nSYMULACJA:"); + wygrane1=0; + wygrane2=0; + zabity1=0; + zabity2=0; + okaleczony1=0; + okaleczony2=0; + for(iter=0;iter