اینم یه بازی گرافیکیه عالی با سی
در ضمیمه فایل اجرا این بازی با بازی دوز قبلی داده شده است
#include<graphics.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <dos.h>
union REGS in,out;
union REGS InRegs;
union REGS OutRegs;
int prev_mouse_x=0;
int prev_mouse_y=0;
void mouse( )
{
InRegs.x.ax=0x0001;
int86(0x33,&InRegs,&OutRegs);
}
int callmouse()
{
in.x.ax=1;
int86(51,&in,&out);
return 1;
}
void mouseposi(int &xpos,int &ypos,int &click)
{
in.x.ax=3;
int86(51,&in,&out);
click=out.x.bx;
xpos=out.x.cx;
ypos=out.x.dx;
}
int mousehide()
{
in.x.ax=2;
int86(51,&in,&out);
return 1;
}
void setposi(int &xpos,int &ypos)
{
in.x.ax=4;
in.x.cx=xpos;
in.x.dx=ypos;
int86(51,&in,&out);
}
void resetmouse()
{in.x.ax=0;
int86(51,&in,&out);}
void restrictmouseptr(int x1,int y1,int x2,int y2)
{
in.x.ax=7;
in.x.cx=x1;
in.x.dx=x2;
int86(51,&in,&out);
in.x.ax=8;
in.x.cx=y1;
in.x.dx=y2;
int86(51,&in,&out);
}
#define con 20
#define add 13
void input(int[],int[]);
void motion(int[],int);
void dis(int,int,int,int,int);
void club(int,int);
void hearts(int,int);
void spade(int,int);
void diamond(int,int);
void begin(int[],int[]);
void intialize(int[]);
void call(int[],int[],int[]);
int pluskid(int[],int[],int);
int score(int,int[],int[],int,int[],int);
int now(int,int[],int[]);
int move(int,int,int[],int[],int);
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\
void main(){
int d=DETECT,m=0;
initgraph(&d,&m,"");
restrictmouseptr(3,1,637,447);
int adv[4]={0};int sc[4]={0};
while(1){
input(adv,sc);}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void intialize(int array[52]){
int i,j,s,k,player,face;
randomize();
for(j=0;j<4;j++)
for(i=1+j*con;i<14+j*con;i++){
player=random(52);
while(array[player]!=0)
player=random(52);
array[player]=i;}
for(k=0;k<4;k++)
for(i=k*add;i<13+k*add;i++)
for(j=12+k*add;j>i;j--)
if(array[i]>array[j]){
face=array[i];array[i]=array[j];array[j]=face;}
for(k=1;k<4;k++)
for(i=k*add;i<13+k*add;i++)
for(j=12+k*add;j>i;j--)
if(array[i]<array[j] && ((array[j]<14 && array[i]<14) || (20<array[j] && 20<array[i] && array[i]<34 && array[j]<34) || (40<array[j] && 40<array[i] && array[i]<54 && array[j]<54) || (60<array[j] && 60<array[i] && array[i]<74 && array[j]<74)) ){
face=array[i];array[i]=array[j];array[j]=face;}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\
int pluskid(int plus[52],int a[4],int cv){
char h;int f,q,e,i,j,s,k,m,g,x,y,cl=0,b=0,n,p=0,l=0;
setposi(550,430);
callmouse();
for(j=0;j<add;j++)
if(plus[j]>cv && plus[j]<cv+14){
l=13;break;}
while(1){
while(cl==0 || cl==2)
mouseposi(x,y,cl);
y=y>475 ? y/10 : y;
sound(3000);
delay(9);
nosound();
for(n=0;n<7;n++){
if(x>10+n*90 && x<93+n*90)
if(y>210 && y<340){
b=n+1;break;}
else if(y>345 && y<475){
b=n+8;break;}}
if(b==0 || b==14){cl=0;b=0;continue;}
for(n=0;n<13;n++){
if(plus[n]!=0)
p++;
if(p==b){
if(l==0){
a[0]=plus[n];
plus[n]=0;
m=0;break;}
else
if(plus[n]>cv && plus[n]<cv+14){
a[0]=plus[n];
plus[n]=0;
m=0;break;}p=15;break;}}
if(p!=b){b=0;cl=0;p=0;continue;}
if(a[0]>20)
m=20;
if(a[0]>40)
m=40;
if(a[0]>60)
m=60;
return m;}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\
int move(int i,int m,int plus[52],int a[4],int w){
int j,s,f=0,q,k=-1;//need to improve
for(j=i*add;j<add*(i+1);j++){
if(plus[j]==71 && plus[j]>m && plus[j]<a[w]){
a[i]=plus[j];plus[j]=0;return w;}
else if(plus[j]==71){
k=j;break;}else;}
for(j=i*add;j<add*(i+1);j++){
if(plus[j]>m && plus[j]<a[w]){
a[i]=plus[j];plus[j]=0;s=j;f=1;break;}
else if(a[w]<plus[j] && plus[j]<m+14){
a[i]=plus[j];s=j;f=1;w=i;//need to improvment for i=2 stage
}else;}
if(f==1)
plus[s]=0;
else{//need to improvment
if(k!=-1){
a[i]=plus[k];plus[k]=0;return w;}
q=0;m=i*add;
while(plus[m+q]==0)
q++;
a[i]=plus[m+q];plus[m+q]=0;}
return w;}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\
int now(int w,int us[52],int a[4]){
int i;int val=14,v,c,m;//begin of movement with PC
for(i=w*add;i<(w+1)*add;i++){
v=us[i];
if(v>0 && (v%20)<(val%20)){
val=v;c=i;m=(v/20)*20;}else;}
a[w]=val;us[c]=0;
return m;}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
int score(int a[4],int m,int kid[4],int w,int sc[4],int ctl){
int i,min=100;int j=w,h=a[w];
if(ctl==0){
for(i=0;i<4;i++)
if(a[i]>m && a[i]<m+14 && h<a[i]){
h=a[i];j=i;}
for(i=0;i<4;i++){
if(a[i]>0 && a[i]<14)
sc[j]++;//j is lost this stage
else if(a[i]==71)
sc[j]+=13;}
return j;}
else{
for(i=0;i<4;i++)
if(sc[i]==26){
for(j=0;j<4;j++)
if(j!=i)
kid[j]+=26;return j;}
for(i=0;i<4;i++)
kid[i]+=sc[i];
for(i=0;i<4;i++){
if(kid[i]<min){
min=kid[i];j=i;}
if(kid[i]>99)
w=100;}
if(w==100){
kid[0]=kid[1]=kid[2]=kid[3]=0;
cleardevice();
setcolor(4);
settextstyle(3,0,19);
if(j==0)
outtextxy(30,200,"YOU WIN");
else
outtextxy(30,200,"YOU LOST");
delay(3000);cleardevice();}
return i;}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void input(int adv[4],int sc[4]){
int x,y,cl=0,i=-2,j,color=14,a1=3;int u[52]={0},a[4]={0};
setposi(460,30);
mouse();
sc[3]=0;sc[1]=0;sc[2]=0;sc[0]=0;
call(u,adv,sc);
setcolor(4);
settextstyle(1,0,9);
outtextxy(110,25,"HEARTS");
settextstyle(3,0,1);
outtextxy(200,250," Developed And Designed:");
settextstyle(4,0,19);
outtextxy(120,250,"PlusKid");
setcolor(a1);
settextstyle(0,0,1);
setfillstyle(1,4);
rectangle(500,30,580,50);
settextstyle(0,0,1);
floodfill(503,33,a1);
outtextxy(509,35," NEW");
rectangle(500,60,580,80);
floodfill(503,65,a1);
outtextxy(508,67," HELP");
rectangle(500,90,580,110);
floodfill(503,93,a1);
outtextxy(509,95,"CONTINUE");
rectangle(500,120,580,140);
floodfill(503,125,a1);
outtextxy(508,125," ABOUT");
rectangle(500,150,580,170);
floodfill(503,152,a1);
outtextxy(508,155," QUIT");
settextstyle(0,0,1);
while(cl==0 || cl==2){
mouseposi(x,y,cl);
while(y>33 && y<49 && (cl==0 || cl==2) && x>510 && x<570){
mouseposi(x,y,cl);
i=0;
setcolor(color);
rectangle(500,30,580,50);}
setcolor(a1);
rectangle(500,30,580,50);
while(y>61 && y<80 && (cl==0 || cl==2) && x>510 && x<570){
mouseposi(x,y,cl);
setcolor(color);
rectangle(500,60,580,80);
i=1;}
setcolor(a1);
rectangle(500,60,580,80);
while(y>90 && y<110 && (cl==0 || cl==2) && x>510 && x<570){
mouseposi(x,y,cl);
setcolor(color);
rectangle(500,90,580,110);
i=2;}
setcolor(a1);
rectangle(500,90,580,110);
while(y>120 && y<140 && (cl==0 || cl==2) && x>510 && x<570){
setcolor(color);
mouseposi(x,y,cl);
i=3;
rectangle(500,120,580,140);}
setcolor(a1);
rectangle(500,120,580,140);
while(y>151 && y<170 && (cl==0 || cl==2) && x>510 && x<570){
setcolor(color);
mouseposi(x,y,cl);
i=4;
rectangle(500,150,580,170);}
setcolor(a1);
rectangle(500,150,580,170);}
switch(i){
case 0:
begin(a,sc);
break;
case 1:
mousehide();
setviewport(120,110,520,330,1);
clearviewport();
floodfill(1,1,2);
window(10,10,240,250);
bar3d(0,0,390,240,10,0);
setcolor(11);
highvideo();
outtextxy(28,5," IN THE NAME OF GOD ");
outtextxy(20,25," Introduce Of This Game ");
outtextxy(20,45," WithOut Heart And Spade Queen");
outtextxy(1,65," You Are Pluskid.");
outtextxy(20,85," Spade Queen Is Equal -13");
outtextxy(30,105," Every Heart Which You Get Is Equal -1");
outtextxy(20,125," The Winner's Name Is Red");
outtextxy(1,145," Game Is Continued Till Somebody Get -100 Score");
outtextxy(1,165,"Whatever Your Score Is Higher You're Loser Sooner");
outtextxy(30,200," Sunday,May 07,2006");
delay(15000);
setfillstyle(11,8);
floodfill(10,10,4);
setviewport(0,0,639,479,1);
cleardevice();
call(u,adv,sc);
i=-1;
input(adv,sc);
break;
case 2:
if(adv[0]==0 && adv[1]==0 && adv[2]==0 && adv[3]==0){
mousehide();
setviewport(140,110,400,190,1);
clearviewport();
floodfill(1,1,2);
window(10,10,240,250);
bar3d(0,0,250,80,10,0);
setcolor(11);
highvideo();
outtextxy(28,40,"YOU DON'T BEGIN ANY GAME ");
delay(1500);
setfillstyle(11,8);
floodfill(10,10,4);
setviewport(0,0,639,479,1);
cleardevice();
break;}
begin(adv,sc);
break;
case 4:
exit(1);
break;
case 3:
mousehide();
setviewport(200,110,460,300,1);
clearviewport();
floodfill(1,1,2);
window(10,10,200,250);
bar3d(0,0,250,190,10,0);
setcolor(14);
highvideo();
outtextxy(8,5," IN THE NAME OF GOD ");
outtextxy(1,45," Developed And Published By: ");
outtextxy(1,70," Hossein Paimard");
outtextxy(1,100," Pluskid2000@yahoo.com");
outtextxy(1,130," Sunday,May 07,2006");
delay(6000);
setfillstyle(11,8);
floodfill(10,10,4);
setviewport(0,0,639,479,1);
cleardevice();
call(u,adv,sc);
i=-1;
input(adv,sc);
break;
}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void begin(int adv[4],int sc[4]){
int a[4]={0},j,i,w,m,s=13,cl=0,x,y,ss;
//call(plus,adv);
int plus[52]={0};
intialize(plus);
//input(adv);
w=random(4);
j=w;
while(s--){
mousehide();
call(plus,adv,sc);
if(w==0)
m=pluskid(plus,a,-100);
else
m=now(w,plus,a);
motion(a,w);
for(i=w+1;i<w+4;i++){
if((i%4)==0)
pluskid(plus,a,m);
else
j=move(i%4,m,plus,a,j);
motion(a,i%4);}
setposi(540,345);
w=score(a,m,adv,w,sc,0);
j=w;
mousehide();
delay(1500);
clearviewport();}
score(a,m,adv,w,sc,1);
input(adv,sc);}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void motion(int a[4],int i){
int j,f;
j=a[i]/con;
f=a[i]%con;
dis(f,i,j,1+i,-180);}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void club(int i,int j){
setcolor(0);
circle(i+8,j+2,4);
circle(i+4,j+9,4);
circle(i+13,j+9,4);
rectangle(i+5,j+13,i+11,j+18);
setfillstyle(0,10);
putpixel(i+9,j+6,5);
putpixel(i+8,j+12,0);
putpixel(i+9,j+12,0);
putpixel(i+8,j+11,0);
putpixel(i+9,j+11,0);
floodfill(i+9,j+16,0);
floodfill(i+8,j+2,0);
floodfill(i+5,j+9,0);
floodfill(i+11,j+9,0); }
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void call(int array[52],int adv[4],int sc[4]){
int s,j,k=0,i,m=0,x,y,cl,min=10,min1=10,yy=-1,nn=-1;
char p0[3]={0},p1[3]={0},p2[3]={0},p3[3]={0},p10[3]={0},p11[3]={0},p12[3]={0},p13[3]={0};
//resetmouse();
for(i=0;i<13;i++){
s=array[i];
if(s==0)continue;
if(s<14+k*con){
switch(k){
case 0:k=0;
dis(s,m,0,m,0);m++;
break;//call hearts
case 1:k=0;
dis(s-con,m,1,m,0);m++;break;//call club
case 2:k=0;
dis(s-2*con,m,2,m,0);m++;
break;
case 3:k=0;
dis(s-3*con,m,3,m,0);m++;
break;}}
else{
k++;i--;}}
setcolor(4);
settextstyle(1,0,9);
outtextxy(110,25,"HEARTS");
settextstyle(0,0,1);
setcolor(4);
setfillstyle(1,4);
ellipse(54,13,0,360,46,12);
floodfill(55,14,4);
setcolor(15);
outtextxy(11,10,"TOTAL SCORE");
setcolor(4);
ellipse(54,175,0,360,46,12);
floodfill(55,176,4);
setcolor(15);
outtextxy(10,172,"STAGE SCORE");
setcolor(2);
min=min1=100;
for(int o=0;o<4;o++)
if(adv[o]<min){
min=adv[o];yy=o;}
for(o=0;o<4;o++)
if(sc[o]<min1){
min1=sc[o];nn=o;}
itoa(adv[0],p0,10);itoa(adv[1],p1,10);
itoa(adv[2],p2,10);itoa(adv[3],p3,10);
itoa(sc[0],p10,10);itoa(sc[1],p11,10);
itoa(sc[2],p12,10);itoa(sc[3],p13,10);
if(yy==0)
setcolor(4);
else
setcolor(3);
outtextxy(25,37,"Pluskid");outtextxy(45,52,p0);
if(nn==0)
setcolor(4);
else
setcolor(3);
outtextxy(113,168,"Pluskid");outtextxy(130,185,p10 );
if(yy==1)
setcolor(4);
else
setcolor(3);
outtextxy(25,67,"Hossein");outtextxy(45,82,p1);
if(nn==1)
setcolor(4);
else
setcolor(3);
outtextxy(203,168,"Hossein");outtextxy(223,185,p11 );
if(yy==2)
setcolor(4);
else
setcolor(3);
outtextxy(25,97,"Michael");outtextxy(45,112,p2);
if(nn==2)
setcolor(4);
else
setcolor(3);
outtextxy(290,168,"Michael");outtextxy(315,185,p12 );
if(yy==3)
setcolor(4);
else
setcolor(3);
outtextxy(25,127,"Carlson");outtextxy(45,142,p3);
if(nn==3)
setcolor(4);
else
setcolor(3);
outtextxy(380,168,"Carlson");outtextxy(405,185,p13 );}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void dis(int i,int m,int g,int z,int s){
int x,y,spot[30]={0},r;char j[20]={0};
setfillstyle(11,8);
setcolor(3);
floodfill(10,10,4);
i++;
rectangle(0,200,639,479);
setposi(590,370);
callmouse();
if(i==14){
strcpy(j," ACE");
i=1;}
else if(i==13){
strcpy(j," KING");
i=1;}
else if(i==12){
strcpy(j,"QUEEN");
i=1;}
else if(i==11){
strcpy(j," JACK");
i=1;}
else
itoa(i,j,10);
if(m>6){
z=m-7;
s=135;}
y=93+90*z;
x=3+z*90;
rectangle(x+7,210+s,y,340+s);
setfillstyle(1,15);
floodfill(x+8,211+s,3);
outtextxy(x+11,214+s,j);
spot[0]=x+28;spot[1]=215+s;
spot[2]=x+55;spot[3]=spot[1];
spot[4]=spot[0];spot[5]=239+s;
spot[6]=spot[2];spot[7]=spot[5];
spot[8]=spot[0];spot[9]=263+s;
spot[10]=spot[2];spot[11]=spot[9];
spot[12]=spot[0];spot[13]=289+s;
spot[14]=spot[2];spot[15]=spot[13];
spot[16]=spot[0];spot[17]=313+s;
spot[18]=spot[2];spot[19]=spot[17];
switch(g){
case 0:
if(i==1){
hearts(x+43,spot[11]);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
outtextxy(x+12,spot[11]-28,j);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);}
else
for(r=0;r<i;r++)
hearts(spot[r*2],spot[r*2+1]);
break;
case 1:
if(i==1){
club(x+43,spot[11]);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
outtextxy(x+12,spot[11]-28,j);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);}
else
for(r=0;r<i;r++)
club(spot[r*2],spot[r*2+1]+2);
break;
case 2:
if(i==1){
diamond(x+43,spot[11]);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
outtextxy(x+12,spot[11]-28,j);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);}
else
for(r=0;r<i;r++)
diamond(spot[r*2],spot[r*2+1]);
break;
case 3:
if(i==1){
spade(x+43,spot[11]);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
outtextxy(x+12,spot[11]-28,j);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);}
else
for(r=0;r<i;r++)
spade(spot[r*2],spot[r*2+1]);
break;}}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void diamond(int i,int j){
int p[10]={0};
char pattern[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
setcolor(4);
p[0]=i;p[1]=j+12;p[2]=i+7;p[3]=j+1;p[4]=i+14;
p[5]=j+12;p[6]=i+7;p[7]=j+24;p[8]=i;p[9]=j+12;
drawpoly(5,p);
setfillpattern(pattern,4);
fillpoly(5,p);}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void hearts(int i,int j){
int p[10]={0};
char pattern[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
setcolor(4);
p[0]=i;p[1]=j+12;p[2]=i+7;p[3]=j+23;p[4]=i+14;p[5]=j+12;p[6]=i;p[7]=j+12;
drawpoly(4,p);
setfillpattern(pattern,4);
fillpoly(4,p);
circle(i+3,j+9,4);
circle(i+11,j+9,4);
putpixel(i+8,j+11,0);
putpixel(i+9,j+11,0);
floodfill(i+3,j+9,4);
floodfill(i+11,j+9,4);}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void spade(int i,int j){
int p[10]={0};
char pattern[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
setcolor(0);
p[0]=i;p[1]=j+14;p[2]=i+7;p[3]=j+2;p[4]=i+14;p[5]=j+14;p[6]=i;p[7]=j+14;
drawpoly(4,p);
setfillpattern(pattern,0);
fillpoly(4,p);
circle(i+4,j+15,4);
circle(i+10,j+15,4);
rectangle(i+5,j+16,i+9,j+24);
putpixel(i+7,j+15,0);
putpixel(i+6,j+17,0);
putpixel(i+8,j+17,0);
floodfill(i+8,j+21,0);
floodfill(i+4,j+15,0);
floodfill(i+10,j+15,0);}
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\