⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showpic.cpp

📁 用遗传算法解决旅行商问题
💻 CPP
字号:
// showpic.cpp : 实现文件
//

#include "stdafx.h"
#include "TSP2.h"
#include "showpic.h"

#include <cmath>
#include <ctime>
#include <vector>
#include <hash_map>
#include <string>
#include <iostream>
#include <algorithm>
#include <windows.h>   
#include <stdio.h> 
using namespace std;
using namespace stdext;

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

FILE *galog_draw; /* an output(1) file */

int x_1,x_2,y_1,y_2;
int maxgen_1=500;
int max_fitness,min_fitness;
int max_x,min_x;
int length_x;
int length;
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
void set_map_l(); //设置轮船赌选择
void set_map_j();//设置竞赛选择
// showpic 对话框

IMPLEMENT_DYNAMIC(showpic, CDialog)

showpic::showpic(CWnd* pParent /*=NULL*/)
	: CDialog(showpic::IDD, pParent)
	//, maxgen_(0)
{
	
	srand(time(NULL));
}

showpic::~showpic()
{
}

void showpic::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
//	DDX_Text(pDX, IDC_EDIT1, maxgen_);
	//DDV_MinMaxInt(pDX, maxgen_, 50, 500);

}


BEGIN_MESSAGE_MAP(showpic, CDialog)
	ON_BN_CLICKED(IDC_BUTTON1, &showpic::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &showpic::OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON3, &showpic::OnBnClickedButton3)	
	ON_WM_PAINT()
END_MESSAGE_MAP()


// showpic 消息处理程序

void showpic::OnBnClickedButton1()
{
	//show_map=false;
	OnOK();
	// TODO: 在此添加控件通知处理程序代码
}

void showpic::OnBnClickedButton2()
{   
	//////////////轮盘选择图线///////////////////////
	

	set_map_l();

	if ((galog_draw = fopen("galog_l.txt","r+"))==NULL)  {     exit(1);      }
	

CDC *pDC=GetDC();
	int red=rand()/(float)RAND_MAX*255,
		gre=rand()/(float)RAND_MAX*255,
		blue=rand()/(float)RAND_MAX*255;


////////////////////drawline////////////////////////

	   CPen newPen1(PS_SOLID,1,RGB(255,gre,blue)); 
pDC->SelectObject(&newPen1);
     fscanf(galog_draw, "     %d %d", &x_1,&y_1);
 
	
	   //  x_1=x_1+10;

       y_1=int(((y_1-min_fitness)*500/length));
       x_1=int(((x_1-min_x)*500/length_x));
		 y_1+=10;
		 x_1+=10;
   

  while(1){
    
	  fscanf(galog_draw, "     %d %d", &x_2,&y_2);
	
	  y_2=int(((y_2-min_fitness)*500/length));
	  x_2=int(((x_2-min_x)*500/length_x));
	   x_2+=10;
	  // y_2=y_2/100+10;
	  y_2+=10;
                 pDC->MoveTo(x_1,y_1);
                pDC->LineTo(x_2,y_2);
				y_1=y_2;
				x_1=x_2;

 if(x_2==maxgen_1) break;
  }

	 pDC->MoveTo(410,70);
     pDC->LineTo(410,80);
    pDC->MoveTo(410,80);
     pDC->LineTo(510,80);
	   pDC->MoveTo(510,70);
     pDC->LineTo(510,80);
    


	// TODO: 在此添加控件通知处理程序代码
	 fclose(galog_draw);
////////////////////轮盘选择图线END//////////////////////////


	 ReleaseDC(pDC);

}

void set_map_l(){        //设置轮船赌选择


	if ((galog_draw = fopen("galog_l.txt","r+"))==NULL)
      {
      exit(1);
      }
   fscanf(galog_draw, "     %d %d", &min_x,&min_fitness);
 
  while(1){
    
	  fscanf(galog_draw, "     %d %d", &max_x,&max_fitness);
	  if(max_x== maxgen_1) break;
 
  }
   length=max_fitness-min_fitness;
    length_x=max_x-min_x;

fclose(galog_draw);

}

void set_map_j(){        //设置竞赛选择


	if ((galog_draw = fopen("galog_j.txt","r+"))==NULL)
      {
      exit(1);
      }
  fscanf(galog_draw, "     %d %d", &min_x,&min_fitness);
 
  while(1){
    
	  fscanf(galog_draw, "     %d %d", &max_x,&max_fitness);
	  if(max_x== maxgen_1) break;
 
  }
   length=max_fitness-min_fitness+1;
    length_x=max_x-min_x+1;

fclose(galog_draw);

}
void showpic::OnBnClickedButton3()
{
	
	 ////////////////竞赛选择画线///////////////

set_map_j();

	if ((galog_draw = fopen("galog_j.txt","r+"))==NULL)  {     exit(1);      }
	
CDC *pDC=GetDC();
	int red=rand()/(float)RAND_MAX*255,
		gre=rand()/(float)RAND_MAX*255,
		blue=rand()/(float)RAND_MAX*255;

	CPen newPen2(PS_SOLID,1,RGB(red,gre,255)); 
	//CPen newPen1(PS_SOLID,3,RGB(255,0,0)); 
	
pDC->SelectObject(&newPen2);


////////////////////drawline////////////////////////
     fscanf(galog_draw, "     %d %d", &x_1,&y_1);
 
	
	    x_1=int(((x_1-min_x)*500/length_x));
	   x_1+=10;
       y_1=int(((y_1-min_fitness)*500/length));
		 y_1+=10;
   

  while(1){
    
	  fscanf(galog_draw, "     %d %d", &x_2,&y_2);
	
	  y_2=int(((y_2-min_fitness)*500/length));
	  x_2=int(((x_2-min_x)*500/length_x));
	   x_2+=10;
	  // y_2=y_2/100+10;
	  y_2+=10;
                 pDC->MoveTo(x_1,y_1);
                pDC->LineTo(x_2,y_2);
				y_1=y_2;
				x_1=x_2;

 if(x_2==maxgen_1) break;
  }

   pDC->MoveTo(410,100);
     pDC->LineTo(410,110);
    pDC->MoveTo(410,110);
     pDC->LineTo(510,110);
	   pDC->MoveTo(510,100);
     pDC->LineTo(510,110);

////////////////////////////////////////////////////
	
		// TODO: 在此添加控件通知处理程序代码
	 fclose(galog_draw);
	 ////////////////////////////////////
 ReleaseDC(pDC);
	
	// TODO: 在此添加控件通知处理程序代码
}


void showpic::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	// TODO: 在此处添加消息处理程序代码
	// 不为绘图消息调用 CDialog::OnPaint()
	CDC *pDC=GetDC();
CBrush brush(RGB(255,255,255));
CPen newPen(PS_SOLID,1,RGB(0,0,0)); 
	//CPen newPen1(PS_SOLID,3,RGB(255,0,0)); 
	
pDC->SelectObject(&newPen);


///////////////////drawmap////////////////////////////
dc.FillRect(CRect(0,0,560,560),&brush);

     pDC->MoveTo(10,10);
     pDC->LineTo(10,550);
      pDC->MoveTo(5,540);
     pDC->LineTo(10,550);
      pDC->MoveTo(15,540);
     pDC->LineTo(10,550);

	 for(int i=1;i<=5;i++){ pDC->MoveTo(i*100+10,1); pDC->LineTo(i*100+10,10);}
	  for(int i=1;i<=25;i++){ pDC->MoveTo(i*20+10,4); pDC->LineTo(i*20+10,10);}

	  pDC->MoveTo(540,5);
     pDC->LineTo(550,10);
       pDC->MoveTo(10,10);
     pDC->LineTo(550,10);
	   pDC->MoveTo(540,15);
     pDC->LineTo(550,10);

	 for(int i=1;i<=5;i++){ pDC->MoveTo(1,i*100+10); pDC->LineTo(10,i*100+10);}
	 for(int i=1;i<=25;i++){ pDC->MoveTo(4,i*20+10); pDC->LineTo(10,i*20+10);}
	    pDC->MoveTo(410,40);
     pDC->LineTo(410,50);
    pDC->MoveTo(410,50);
     pDC->LineTo(510,50);
	   pDC->MoveTo(510,40);
     pDC->LineTo(510,50);
/////////////////////////////////////////////////////
 ReleaseDC(pDC);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -