ورود

View Full Version : سوال: اشکال این کد چیه



hafez1
یک شنبه 22 مرداد 1391, 16:49 عصر
این برنامه به زبان سیه.اگه اجراش کنید می بینید که دوتا مستطیله با یه توپ.که باید توپو به مستطیلا برخورد بدی اگه برخورد کرد یه توپه دیگه بمون میده اگه برخورد نکرد می بازیم .مشکل اینه اگه که مثلا دفه اول برنده بشه یه توپ دیگه بش می ده حالا اگه با این توپ دومی ببازه پیغام باختنو چاپ نمی کنه و می یاد همین جوری بیرون.چرا؟
اینام کداش.(راسی باید اسپیسو بزنید تا بازی شرو شه)


#include <stdio.h>
#include <conio.h>
#include <dos.h>
void putchxy(int x, int y, char c)
{
gotoxy(x,y);
putch(c);
}
void clearbox(int x, int y)
{
gotoxy(x,y);
printf( \n);
gotoxy(x,y+1);
printf( );
}
goid putbox(int x, int y)
{
gotoxy(x,y);
printf( \n);
gotoxy(x,y+1);
printf( );
}
void main()
{
int x=50,y=25,m1=1,m2=-1,x1=1,x2=75,n=1,I,y1=4,y2=2,m=0;
clrscr();
while(n!=0)
{
gotoxy(1,25);
printf(n=%d,n);
x1=x1+m1;
x2=x2+m2;
if(x1==75)
m1=-1;
if(x1==1)
m1=1;
if(x2==1)
m2=1;
if(x2==75)
m2=-1;
if((((x>=x1 && x<=x1+3) && (y>=y1 && y<=y1+2)) || ((x>=x2 && x<=x2+3) && (y>=y2 && y<=y2+2)))
{
n++;
m=0;
}
if(y==1)
n--;
if(n==0)
break;
putbox(x1,4);
putbox(x2,2);
if(m)
putchxy(x,y,o);
delay(300);
clearbox(x1,4);
clearbox(x2,2);
putchxy(x,y, );
y--;
if(y==1)
m=0;
if(kbhit())
{
char ch=getch();
clrscr();
if(ch==75)
x--;
if(ch==77)
x++;
if(ch==32)
{
m=1;
y=25;
}
if(ch==p)
getch();
if(ch==27)
return;
}
}
gotoxy(37,15);
printf(you lose);
getch();
}

amin1softco
یک شنبه 22 مرداد 1391, 18:08 عصر
من کلاً توپی ندیدم! مسطیلی هم ندیدم ولی این اصلاح شده و قابل اجراست....
#include<stdio.h>
#include<conio.h>
#include<dos.h>
void putchxy(int x, int y, char c)
{
gotoxy(x,y);
putch(c);
}
void clearbox(int x, int y)
{
gotoxy(x,y);
printf(" \n");
gotoxy(x,y+1);
printf("*");
}
void putbox(int x, int y)
{
gotoxy(x,y);
printf(" \n");
gotoxy(x,y+1);
printf("*");
}
void main()
{
int x=50,y=25,m1=1,m2=-1,x1=1,x2=75,n=1,I,y1=4,y2=2,m=0;
clrscr();
while(n!=0)
{
gotoxy(1,25);
printf("n=%d",n);
x1=x1+m1;
x2=x2+m2;
if(x1==75)
m1=-1;
if(x1==1)
m1=1;
if(x2==1)
m2=1;
if(x2==75)
m2=-1;
if(((x>=x1 && x<=x1+3) && (y>=y1 && y<=y1+2)) || ((x>=x2 && x<=x2+3) && (y>=y2 && y<=y2+2)))
{
n++;
m=0;
}
if(y==1)
n--;
if(n==0)
break;
putbox(x1,4);
putbox(x2,2);
if(m)
putchxy(x,y,'o');
delay(300);
clearbox(x1,4);
clearbox(x2,2);
putchxy(x,y,' ');
y--;
if(y==1)
m=0;
if(kbhit())
{
char ch=getch();
clrscr();
if(ch==75)
x--;
if(ch==77)
x++;
if(ch==32)
{
m=1;
y=25;
}
if(ch=='p')
getch();
if(ch==27)
return;
}
}
gotoxy(37,15);
printf("you lose");
getch();
}

hafez1
چهارشنبه 25 مرداد 1391, 00:01 صبح
این کد وقتی برنده می شه 2 تا توپ جایزه می ده .اگه بخام یکی جایزه بده باید کجاشو تغییر داد؟

amin1softco
چهارشنبه 25 مرداد 1391, 06:25 صبح
این کد وقتی برنده می شه 2 تا توپ جایزه می ده .اگه بخام یکی جایزه بده باید کجاشو تغییر داد؟

ببین شما یک مربع در نظر گرفتی و در زمان های مختلف که تا رستارت شدن موقعیت توپ وجود داره برنامه به برنده پاداش میده اگر بعد از اولین برد موقعیتش ست بشه دیگه این اتفاق نمی افته .... سوال اولم دقیقاً مشکلش همین بود یعنی زمانی که در موعیت 1 قرار می گیره و امتیاز کم می کنه 1 امتیاز کم نمی کنه چند امتیاز کم می کنه و مقدارش منفی می شه...if(n<=0)
break



#include<stdio.h>
#include<conio.h>
#include<dos.h>
void putchxy(int x, int y, char c)
{
gotoxy(x,y);
putch(c);
}
void clearbox(int x, int y)
{
gotoxy(x,y);
printf(" \n");
gotoxy(x,y+1);
printf("*");
}
void putbox(int x, int y)
{
gotoxy(x,y);
printf("###");
gotoxy(x,y+1);
printf("###");
}
void main()
{
int x=50,y=25,m1=1,m2=-1,x1=1,x2=75,n=1,I,y1=4,y2=2,m=1;
clrscr();
while(n!=0)
{
clrscr();
gotoxy(1,25);
printf("n=%d",n);
x1=x1+m1;
x2=x2+m2;
if(x1==75)
m1=-1;
if(x1==1)
m1=1;
if(x2==1)
m2=1;
if(x2==75)
m2=-1;
if(((x>=x1 && x<=x1+3) && (y>=y1 && y<=y1+2)) || ((x>=x2 && x<=x2+3) && (y>=y2 && y<=y2+2)))
{
n++;
x=1;y=1;
m=0;
}
if(y==1){
x=1;y=1;
n--;
}
if(n<=0)
break;
putbox(x1,4);
putbox(x2,2);
if(m)
putchxy(x,y,'o');
delay(300);
//clearbox(x1,4);
//clearbox(x2,2);
putchxy(x,y+1,'^');
y--;
if(y==1)
m=0;
if(kbhit())
{
char ch=getch();
clrscr();
if(ch==75)
x--;
if(ch==77)
x++;
if(ch==32)
{
m=1;
y=25;
}
if(ch=='p')
getch();
if(ch==27)
return;
}
}
gotoxy(37,15);
printf("you lose");
getch();
}