#include #include #include #include #include #include #define BREITE 47 //Kontante (Breite in Pixel) void opengraph() //Erkennung der Graph.modus { int driver=DETECT, modus, fehler; initgraph(&driver,&modus,"a:\\"); fehler=graphresult(); if(fehler!=grOk) { cout<<"Fehler="<=1){ weg1=getpixel(x*BREITE+BREITE/2+gx*BREITE/4,y*BREITE+BREITE/2+gy*BREITE/4); weg2=getpixel(x*BREITE+BREITE/2+gx*3*BREITE/5,y*BREITE+BREITE/2+gy*3*BREITE/5); punkt1=getpixel(x*BREITE+BREITE/2+gx*BREITE,y*BREITE+BREITE/2+gy*BREITE); punkt2=getpixel(x*BREITE+BREITE/6+gx*BREITE,y*BREITE+BREITE/6+gy*BREITE); //wichtige Wege;Punkte im Zielfeld if (weg1+weg2==30){ setfillstyle(1,15); fillellipse(x*BREITE+BREITE/2,y*BREITE+BREITE/2,BREITE/6,BREITE/6); setfillstyle(1,spieler); fillellipse((x+gx)*BREITE+BREITE/2,(y+gy)*BREITE+BREITE/2,BREITE/6,BREITE/6); gotoxy(1,1); switch(color) { case 1 :{x=0;y=2;};break; case 2 :{x=10;y=2;};break; case 3 :{x=0;y=9;};break; case 4 :{x=10;y=9;};break; default :;break; } ; if (punkt1<=14){ setfillstyle(1,punkt1); punkt1=punkt1-1; fillellipse(x*BREITE+BREITE/6+BREITE*punkt1/3,y*BREITE+5*BREITE/6,BREITE/6,BREITE/6) ; } if (punkt2>=1){ setfillstyle(1,punkt2); punkt2=punkt2-5; fillellipse(x*BREITE+BREITE/6+BREITE*punkt2/3,y*BREITE+BREITE/6,BREITE/6,BREITE/6); } } } } } void text(int nm,int Anz) { if (Anz==4) {setcolor(Anz); outtextxy(10.1*BREITE,8.4*BREITE,"Nr.4");Anz--;} ; if (Anz==3) {setcolor(Anz); outtextxy(0, 8.4*BREITE,"Nr.3");Anz--;} ; if (Anz==2) {setcolor(Anz); outtextxy(10.1*BREITE,1.4*BREITE,"Nr.2");} ; setcolor(0); outtextxy(0,1.8*BREITE,"->"); outtextxy(10.1*BREITE,1.8*BREITE,"->"); outtextxy(0,8.8*BREITE,"->"); outtextxy(10.1*BREITE,8.8*BREITE,"->"); setcolor(nm); if (nm==1){ outtextxy(0,1.4*BREITE,"Nr.1"); outtextxy(0,1.8*BREITE,"->"); } if (nm==2){ outtextxy(10.1*BREITE,1.4*BREITE,"Nr.2"); outtextxy(10.1*BREITE,1.8*BREITE,"->");} if (nm==3){ outtextxy(0,8.4*BREITE,"Nr.3"); outtextxy(0,8.8*BREITE,"->");} if (nm==4){ outtextxy(10.1*BREITE,8.4*BREITE,"Nr.4"); outtextxy(10.1*BREITE,8.8*BREITE,"->");} } void main() //nx,ny Felder immer int*BREITE { int move ; int nx=0,ny=1,a=0,b=0,c=0,d=0; //fuer die Karten int e=0,i=0; //e für Karte drehen;i Karte bewegen int nr=0,nrs=0,gehe=0,gehex=0,gehey=0,punkte=0; //fuer die Spieler int xp=0,ende=0,ende2=0; int l=0,w=0,runden=0,regeln=0,r=1,r2=1 ; int p1=0,p2=0,p3=0,p4=0 ; char cfg; int intcfg=0; int check=0; clrscr(); do{ cout<<"Spielrunden 1-9\n"; cout<<"sie koennen die anzahl der Runden noch im Spiel veaendern\n\n"; intcfg=getch(); switch(intcfg) { case '1' :{runden=1;check=1;};break; case '2' :{runden=2;check=1;};break; case '3' :{runden=3;check=1;};break; case '4' :{runden=4;check=1;};break; case '5' :{runden=5;check=1;};break; case '6':{runden=6;check=1;};break; case '7' :{runden=7;check=1;};break; case '8' :{runden=8;check=1;};break; case '9' :{runden=9;check=1;};break; } } while(check==0); check=0; do{ cout<<"jedesmal die gleichen regeln n=nein j=ja\n"; cfg=getch(); switch(cfg) { case 'j' :{regeln=1;check=1;};break; case 'J' :{regeln=1;check=1;};break; case 'N' :{regeln=0;check=1;};break; case 'n' :{regeln=0;check=1;};break; } }while(check==0); check=0; do{ nx=0;ny=1;a=0;b=0;c=0;d=0; //fuer die Karten e=0;i=0; //e für Karte drehen;i Karte bewegen nr=0;gehe=0;gehex=0;gehey=0;punkte=0; //fuer die Spieler xp=0; ende=0;ende2=0; if(r==1){ check=0; do{ cout<<"Anzahl der Spieler eingeben (2-4)->\n"; intcfg=getch(); switch(intcfg) { case '2' :{nrs=2;check=1;};break; case '3' :{nrs=3;check=1;};break; case '4' :{nrs=4;check=1;};break; } }while(check==0); check=0; //cin>>nrs; if (nrs<2)nrs=2; if (nrs>4) nrs=4; do{ cout<<"Spieltyp 0=normal; 1=Punkteposition Wuerfeln\n" <<"2=Spielerstart auswuerfeln; 3=beides Wuerfeln\n"; intcfg=getch(); switch(intcfg) { case '0' :{l=0;check=1;};break; case '1' :{l=1;check=1;};break; case '2' :{l=2;check=1;};break; case '3' :{l=3;check=1;};break; } }while(check==0); check=0; // cin>>l; if (l<0)l=0; if (l>2) l=2; do{ cout<<"\n3-wegekarten + 2-wegekarten=0\n"<<"4-wegekarten + sackgassen=1 \n"<<"4-wegekarten + keine sackgassen2=2" ; intcfg=getch(); switch(intcfg) { case '0' :{w=0;check=1;};break; case '1' :{w=1;check=1;};break; case '2' :{w=2;check=1;};break; } }while(check==0); r--; if(regeln==0)r++; clrscr(); } if(r2==1){ cout<<"\nErst:"; cout<<"\n5=Kartedrehen " ; cout<<"\n4=Karte nach links 6=Karte nach Rechts\n"; cout<<"\n0=Karte Schieben\n\n" ; cout<<"\nDann:"; cout<<"\nTasten 4;6 Spieler links;rechts. "; cout<<"\nTasten 8;2 Spieler oben;unten. \n"; cout<<"\nTaste 0 stehen bleiben.\n\n" ; cout<<"\nZiel 4 Punkte sammeln. "; cout<<"\nAuch Gegner koennen gesammelt werden."; cout<<"\nWer von der Karte(7*7) geschoben wird scheidet aus."; cout<<"\nInnerhalb der Karte(7*7) duerfen die Spieler geschoben werden."; cout<<"\nPunkte die von der karte geschoben werden sind verlohren"; cout<<"\mit den tasten 7 und neun koennen sie die anzahl der Spielrunden einstellen."; cout<<"\Wenn sie die 1 und dann die 3 drücken wird das spiel beendet."; r2--; } getch(); opengraph(); randomize() ; do { a=b=c=d=0; if(w==0){ while(a+b+c+d<=1) { ; a=rand()%2; b=rand()%2; c=rand()%2; d=rand()%2; if(a+b+c+b==4) a=b=c=d=0; } } else if(w==1) { while((a+b+c+d)<1){ a=rand()%2; b=rand()%2; c=rand()%2; d=rand()%2; } } else if(w==2){ while((a+b+c+d)<=1) { a=rand()%2; b=rand()%2; c=rand()%2; d=rand()%2; } ; } ; nx++ ; Karte(nx+1,ny+1,a,b,c,d); if(nx==7) {nx=0;ny++;} } while(ny!=8); //Karte 7*7 + Weg durch Zufallszahlen cl(2,2); Karte(2,2,1,1,0,0); cl(2,8); Karte(2,8,1,0,0,1); cl(8,2); Karte(8,2,0,1,1,0); cl(8,8); Karte(8,8,0,0,1,1); //Ecken a=b=c=d=0; while(a+b+c+d<=1) { a=rand()%2; b=rand()%2; c=rand()%2; d=rand()%2; if(a+b+c+b==4) a=b=c=d=0; } nx=3;ny=1; Karte(nx,ny,a,b,c,d); //Karte 50 gotoxy(1,1); cout<<"DVL V 1.4 "; cout<<"\n5=Kartedrehen 0=Karte Schieben, stehenbleiben" ; cout<<"\n4=links 6=rechts; 8=oben 2=unten Aktiv:"; spieler(nrs,l,0,0,0); text(0,nrs) ; do { punkte=0; xp=0; xp=nr; nr++; if (nr>nrs)nr=1; do{ gehex++; if (gehex==9){gehex=0;gehey++;} gehe=getpixel(gehex*BREITE+BREITE/2,gehey*BREITE+BREITE/2); if (gehex*gehey==81) {nr++;if (nr>nrs)nr=1;gehex=gehey=0;} }while(gehe!=nr); //ist spieler noch da? if (nr>nrs)nr=1; gehex=gehey=gehe=0; if (xp==nr) punkte=4; do{ do{ xp=0; text(nr,0); gotoxy(44,3); cout<<"Karte "; move=getch(); if (move==5) xp++; if (move==4) xp++; if (move==6) xp++; if (move==0) xp++; }while(xp!=0); switch(move) { case '1' :{gotoxy(1,1);cout<<"Ende Taste 3 zum bestetigen druecken, 4,5,6 zum weiterspielen";ende=1;};break; case '3' :{if(ende==1){gotoxy(1,1);cout<<"Das Spiel endet nach diesem Zug";ende2=1;}};break; case '9' :{runden++;gotoxy(1,1);cout<<"Runden: "<11) i=0;e=50;ende=0;};break; case '4' :{cl(nx,ny);i--;if (i<0) i=11;e=50;ende=0;};break; case '0' :{ setcolor(15); if (nx==1) { nx=8; do { getkarte(nx,ny,0); setfillstyle(1,getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)); if (getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)!=15)xp++; cl(nx,ny); nx++; cl(nx,ny); putkarte(nx,ny,0); nx=nx-2; //getch(); } while(nx>=1);nx=9; if(xp==1) fillellipse(1*BREITE+BREITE/2,ny*BREITE+BREITE/2,BREITE/6,BREITE/6); } else if (nx==9) { nx=2; do { getkarte(nx,ny,0); setfillstyle(1,getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)); if (getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)!=15)xp++; cl(nx,ny); nx--; cl(nx,ny); putkarte(nx,ny,0); nx=nx+2; //getch(); } while(nx<=9); nx=1; if(xp==1) fillellipse(9*BREITE+BREITE/2,ny*BREITE+BREITE/2,BREITE/6,BREITE/6); } //Karte in x richtung schieben if (ny==1) { ny=8; do { getkarte(nx,ny,0); setfillstyle(1,getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)); if (getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)!=15)xp++; cl(nx,ny); ny++; cl(nx,ny); putkarte(nx,ny,0); ny=ny-2; //getch(); } while(ny>=1);ny=9; if(xp==1) fillellipse(nx*BREITE+BREITE/2,1*BREITE+BREITE/2,BREITE/6,BREITE/6); } else if (ny==9) { ny=2; do { getkarte(nx,ny,0); setfillstyle(1,getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)); if (getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE/2)!=15)xp++; cl(nx,ny); ny--; cl(nx,ny); putkarte(nx,ny,0); ny=ny+2; // getch(); } while(ny<=9);ny=1; if(xp==1) fillellipse(nx*BREITE+BREITE/2,9*BREITE+BREITE/2,BREITE/6,BREITE/6); } //Karte in y richtung schieben d=getpixel(nx*BREITE+BREITE/2,ny*BREITE+3); if (d>2) d=1; else d=0; a=getpixel(nx*BREITE+BREITE-3,ny*BREITE+BREITE/2); if (a>2) a=1; else a=0; b=getpixel(nx*BREITE+BREITE/2,ny*BREITE+BREITE-3); if (b>2) b=1; else b=0; c=getpixel(nx*BREITE+3,ny*BREITE+BREITE/2); if (c>2) c=1; else c=0; cl(nx,ny); Karte(nx,ny,a,b,c,d);e=100;xp=0;};break; default :;break; } //Ende der Tastaturabfrage move=7; if (e==50) switch(i) { case 0 :{nx=3;ny=1;Karte(nx,ny,a,b,c,d);e=0;};break; case 1 :{nx=5;ny=1;Karte(nx,ny,a,b,c,d);e=0;};break; case 2 :{nx=7;ny=1;Karte(nx,ny,a,b,c,d);e=0;};break; case 3 :{nx=9;ny=3;Karte(nx,ny,a,b,c,d);e=0;};break; case 4 :{nx=9;ny=5;Karte(nx,ny,a,b,c,d);e=0;};break; case 5 :{nx=9;ny=7;Karte(nx,ny,a,b,c,d);e=0;};break; case 6 :{nx=7;ny=9;Karte(nx,ny,a,b,c,d);e=0;};break; case 7 :{nx=5;ny=9;Karte(nx,ny,a,b,c,d);e=0;};break; case 8 :{nx=3;ny=9;Karte(nx,ny,a,b,c,d);e=0;};break; case 9 :{nx=1;ny=7;Karte(nx,ny,a,b,c,d);e=0;};break; case 10 :{nx=1;ny=5;Karte(nx,ny,a,b,c,d);e=0;};break; case 11 :{nx=1;ny=3;Karte(nx,ny,a,b,c,d);e=0;};break; } ; } while(e!=100); e=0; gehe=3; do{ do{ xp=0; text(nr,0); gotoxy(44,3); cout<<"Spieler"; gehe=getch(); if (move==8) xp++; if (move==2) xp++; if (move==4) xp++; if (move==6) xp++; if (move==0) xp++; }while(xp!=0); switch(gehe) { case '8' :{gehey=-1;ende=0;};break; case '2' :{gehey=+1;ende=0;};break; case '4' :{gehex=-1;ende=0;};break; case '6' :{gehex=+1;ende=0;};break; case '9' :{runden++;gotoxy(1,1);cout<<"Runden: "<=1){punkte++;gehe=0;} xp++; } while(xp!=4); gehe=xp=0; do{ gehe=getpixel(gehex*BREITE+BREITE/6+xp*(BREITE/3),gehey*BREITE+BREITE/6+2*BREITE/3); if (gehe>=1){punkte++;gehe=0;} xp++; }while(xp!=4); //gotoxy(1,1); //cout<=1); cout<<"Endstand:\n" ; cout<<"Blau"<