#include 在v++中怎么搞???
跳舞的傻子 2014-04-24 12:55:19 最近在自学c,找了个源码 想敲一下!但是错的!!求大神 帮帮忙!
#include <graphics.h>
#include <stdio.h>
#include <algorithm>
int inv_number(int parr[]) {
int sum = 0;
for ( int i = 0; i < 15; ++i ) { // calc inversion number
for ( int j = 0; j < i; ++j ) {
if ( parr[j] > parr[i] ) ++sum;
}
}
return sum;
}
void make_random_map( int arr[][4] ) {
int a, b, sum;
int* parr = ( int* )arr;
for ( int i = 0; i<16; ++i) { // 初始化
parr[i] = i + 1;
}
std::reverse( &parr[4], &parr[8] ); // 调整为
std::reverse( &parr[12], &parr[15] ); // Z形排列
sum = inv_number(parr) % 2; // 算出Z形的逆序数
for ( int i = 0; i<10000; i++ ) { // 打乱
a = random( 15 );
b = random( 15 );
std::swap( parr[a], parr[b] );
}
sum ^= inv_number(parr) % 2; // 与打乱后的逆序数比较
if ( sum ) std::swap( parr[0], parr[1] ); // 奇数则相邻对调一次,保证为偶数
std::reverse( &parr[4], &parr[8] ); // 还原为
std::reverse( &parr[12], &parr[15] ); // 原排列
}
void draw_gameview( int arr[][4] ) {
cleardevice();
PIMAGE img = newimage();
for ( int i = 0; i < 4; i++ ) {
for ( int j = 0; j < 4; j++ ) {
char resName[16];
if ( arr[i][j] != 16 ) {
sprintf( resName, "TU%d", arr[i][j] );
getimage( img, "IMAGE", resName );
putimage( i*200, j*150, img );
}
}
}
}
void game_control( int arr[][4] ) {
int x, y;
for ( int i = 0; i < 4; i++ ) {
for ( int j = 0; j < 4; j++ )
if ( arr[i][j]==16 ) x = i, y = j;
}
key_msg k = getkey();
if ( k.msg == key_msg_down && k.key == key_up ) {
if ( y < 3 )
std::swap( arr[x][y], arr[x][y+1] );
} else if ( k.msg == key_msg_down && k.key == key_down ) {
if ( y > 0 )
std::swap( arr[x][y], arr[x][y-1] );
} else if ( k.msg == key_msg_down && k.key == key_left ) {
if ( x < 3 )
std::swap( arr[x][y], arr[x+1][y] );
} else if ( k.msg == key_msg_down && k.key == key_right ) {
if ( x > 0 )
std::swap( arr[x][y], arr[x-1][y] );
}
}
int are_you_win( int arr[][4] ) {
int sum = 0;
for ( int i = 0; i < 4; i++ ) {
for ( int j = 0; j < 4; j++ )
if ( arr[i][j] == j*4+i+1 )
sum++;
}
if ( sum >= 16 ) {
PIMAGE img = newimage();
getimage( img, "IMAGE", "WIN" );
putimage( 0, 0, img );
return 1;
}
return 0;
}
void welcome() {
PIMAGE img = newimage();
getimage( img, "IMAGE", "START" );
putimage( 0, 0, img );
getkey();
delimage( img );
}
int main() {
setinitmode( 0 );
initgraph( 800, 600 );
setrendermode( RENDER_MANUAL );
randomize();
welcome();
{
int arr[4][4]= {0};
make_random_map( arr );
draw_gameview( arr );
while ( !are_you_win( arr ) ) {
game_control( arr );
draw_gameview( arr );
}
}
getch();
closegraph();
return 0;
}
错误代码
cpp(1) : fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory