0

N وزیر گرافیکی

 
rezahashemian1374
rezahashemian1374
کاربر برنزی
تاریخ عضویت : مهر 1391 
تعداد پست ها : 254
محل سکونت : تهران

N وزیر گرافیکی

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

const m=20;
int k[m][m];
void apply(int,int);
void remove(int,int);
void draw(void);
void move(int i,int j);
void check(void);
void setgraph(void);
int count=0,v,n,i,j,state;
void main()
{
   
cout<<"   n-Queen \n\n";
   
cout<<"Size of board Board:";
   
cin>>n;
   
cout<<"how much Queen:";
   
cin>>v;
   
clrscr();
   
setgraph();
   
draw();
   for (
i=0;i<n;i++)
      for (
j=0;j<n;j++)
     
move(i,j);
   
getch();
   
closegraph();
}

void move(int p,int q)
{
    
apply(p,q);
   
check();
    for (
int i=p;i<n;i++)
         for (
int j=0;j<n;j++)
           if (
k[i][j]==0)
                   
move(i,j);
   
remove(p,q);
}

void apply(int i,int j)
{
    
int p,q;
    
k[i][j]=1;
   
count++;
   for (
p=0;p<n;p++)
        if (
p!=i)
          
k[p][j]++;
   for (
p=0;p<n;p++)
        if (
p!=j)
            
k[i][p]++;
    
p=i+1;q=j+1;
    while(
p<&& q<n)
          
k[p++][q++]++;
    
p=i-1;q=j-1;
    while(
p>=&& q>=0)
          
k[p--][q--]++;
    
p=i+1;q=j-1;
    while(
p<&& q>=0)
          
k[p++][q--]++;
    
p=i-1;q=j+1;
    while(
p>=&& q<n)
          
k[p--][q++]++;
}

void remove(int i,int j)
{
    
int p,q;
    
k[i][j]=0;
   
count--;
   for (
p=0;p<n;p++)
        if (
p!=i)
          
k[p][j]--;
   for (
p=0;p<n;p++)
        if (
p!=j)
            
k[i][p]--;
    
p=i+1;q=j+1;
    while(
p<&& q<n)
          
k[p++][q++]--;
    
p=i-1;q=j-1;
    while(
p>=&& q>=0)
          
k[p--][q--]--;
    
p=i+1;q=j-1;
    while(
p<&& q>=0)
          
k[p++][q--]--;
    
p=i-1;q=j+1;
    while(
p>=&& q<n)
          
k[p--][q++]--;
}

void check (void)
{
   if(
count==v)
        {
         
state++;
         
draw();
          
cout<<endl<<endl<<"press 0 to exit or any key to continue...";
            
int c=getch();
         if (
c=='0')
             exit(
0);
      }
}

/*
void draw (void)
{
    clrscr();
   for (int p=0;p<n;p++)
    {
      for (int q=0;q<n;q++)
     if (k[p][q]!=1)
        cout<<'.'<<setw(3);
     else
        cout<<"X"<<setw(3);
      cout<<endl<<endl;
      }
    cout<<"\n\n total states founded for "<< n <<"*" << n <<" boards and " << v <<" Queens : "<<state;
}
*/

void draw (void)
{
   
clrscr();
   
int mx=getmaxx()/m;
   
int my=getmaxy()/m;
   for (
int p=0;p<n;p++)
   {
      for (
int q=0;q<n;q++)
      {
        if(
k[p][q]==1)
        {
        
setcolor(WHITE);
        
setfillstyle(1,YELLOW);
        }
        else
        {
        
setcolor(WHITE);
        
setfillstyle(1,BLUE);
        }
        
bar(p*mx+2,q*my+2,p*mx+mx+2,q*my+my+2);
        
rectangle(p*mx+2,q*my+2,p*mx+mx+2,q*my+my+2);
      }
   }
   
setcolor(WHITE);
   
rectangle(2,2,mx*n+2,my*n+2);
   
rectangle(0,0,mx*n+4,my*n+4);
   
gotoxy(2,25);
   
cout<<"\n\n total states founded for "<< <<"*" << <<" boards and " << <<" Queens : "<<state;
}

void setgraph(void)
{
   
int gd=DETECTgm;
   
initgraph (&gd,&gm,"..\\bgi");

Seyyed.Reza.Hashemian@Gmail.Com

دوستانی که سوالی دارند یا مایل به تماس هستند می توانند از اطلاعات بالا استفاده نمایند.

اگر هم تایپکی زدید و احتیاج به پاسخگویی سریع داشتید اطلاع دهید

پنج شنبه 18 مهر 1392  9:02 AM
تشکرات از این پست
siryahya
siryahya
siryahya
کاربر طلایی1
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 158652
محل سکونت : ▂▃▄▅▆▇█Tabriz█▇▆▅▄▃▂

پاسخ به:N وزیر گرافیکی

ممنون از نمونه کدهایی که میزارید خیلی آموزند هست

ترکی زبان قربون صدقه رفتنه داریم که: گوزلرین گیله‌سین قاداسین آلیم که یعنی درد و بلای مردمک چشات به جونم …!.

جمعه 10 آبان 1392  2:43 AM
تشکرات از این پست
rezahashemian1374
rezahashemian1374
کاربر برنزی
تاریخ عضویت : مهر 1391 
تعداد پست ها : 254
محل سکونت : تهران

پاسخ به:N وزیر گرافیکی


نقل قول siryahya

ممنون از نمونه کدهایی که میزارید خیلی آموزند هست


خواهش می کنم دوست گرامی

وظیفست کاریه که باید انجام بدیم

Seyyed.Reza.Hashemian@Gmail.Com

دوستانی که سوالی دارند یا مایل به تماس هستند می توانند از اطلاعات بالا استفاده نمایند.

اگر هم تایپکی زدید و احتیاج به پاسخگویی سریع داشتید اطلاع دهید

چهارشنبه 22 آبان 1392  2:08 PM
تشکرات از این پست
دسترسی سریع به انجمن ها