当前位置:首页 > 代码 > 正文

vs源代码实例(vs2015项目开发实例)

admin 发布:2022-12-19 23:23 151


本篇文章给大家谈谈vs源代码实例,以及vs2015项目开发实例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何在VS2010中运行写好的C#的源代码

根据你的代码类型,新建工程,是窗体或者控制台或者类,把你的代码拷贝进去就行。

求VS得贪吃蛇源代码!谢谢大神 还有个问题在VS中写#include应输入预处理器指令

// Snake.cpp

#include windows.h

#include tchar.h

#include atlimage.h

#include deque

using namespace std;

#include Mmsystem.h

#pragma comment( lib,"winmm.lib" )

const UINT MAX_LOADSTRING = 40;

TCHAR szTitle[MAX_LOADSTRING] = "贪吃蛇 js简化版1.1";

TCHAR szWindowClass[MAX_LOADSTRING] = "Snake";

ATOM MyRegisterClass(HINSTANCE hInstance);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

const UINT BMP_WIDTH = 600;

const UINT BMP_HEGITH = 600;

HWND g_hWnd;

HDC g_hDC;

HDC g_hBufDC;

HBITMAP g_hBufBmp;

CImage g_Bg; //背景图

CImage g_Snake; //蛇图

CImage g_Food; //食物图

CImage g_Head; //蛇头图

CImage g_Rear; //蛇尾图

CImage g_Shibai; //死亡图

dequePOINT g_SnakeDeque; //蛇位置队列

POINT g_FoodPos; //食物位置

int iSnakeDir; //蛇位置方向

enum DIR_ENUM { DIR_UP,DIR_DN,DIR_LT,DIR_RT };  //枚举4个方向

int iKey;  //记录玩家按下的按键值

int iLife = 3; //三条生命

bool bIsDie = false; //是否死亡过

bool bAtc = false;

POINT ptHead;

void GameInit(); //游戏初始化

void GameFrame(); //游戏帧

void InputProcess(); //输入处理

void LogicProcess(); //逻辑处理

void WndDrawProcess(); //窗口图形绘制

//判断pt点是否在蛇身

bool IsInSnake( POINT pt )

{

for (UINT i=0;ig_SnakeDeque.size();i++)

{

if (g_SnakeDeque[i].x == pt.x  g_SnakeDeque[i].y == pt.y)

{

return true;

}

}

return false;

}

//随机食物位置

void FoodRand()

{

do 

{

g_FoodPos.x = rand()%20*30;  //宽600,最多有20个30,随机一下

g_FoodPos.y = rand()%20*30;

} while (IsInSnake(g_FoodPos));

}

void GameInit()

{

g_hDC = GetDC(g_hWnd);

g_hBufDC = CreateCompatibleDC(g_hDC);

g_hBufBmp = CreateCompatibleBitmap(g_hDC,BMP_WIDTH,BMP_HEGITH);

SelectObject(g_hBufDC,g_hBufBmp);

ReleaseDC(g_hWnd,g_hDC);

g_Bg.Load("bg.png");

g_Snake.Load("snake.png");

g_Food.Load("food.png");

g_Head.Load("head.png");

g_Rear.Load("rear.png");

g_Shibai.Load("sbai.png");

POINT ptSnake = {300,300}; //定义蛇位置

g_SnakeDeque.push_back(ptSnake);//位置加入队列中

iSnakeDir = rand()%4; //随机蛇运动方向

mciSendString( "open bg.mp3 alias bgMusic",NULL,0,NULL ); //发送MIC命令:打开bgMusic.mp3文件,并命名为 bgMusic 记住这名字很重要

mciSendString( "play bgMusic from 0 repeat",NULL,0,NULL );//从0开始播放bgMusic,并重复播放 其他的命令还算有stop,pause等

//以此类推,先读取了吃到食物和死亡的音乐,在指定位置播放

mciSendString( "open eat.wav alias eatMusic",NULL,0,NULL ); //同上(能支持CD,MP3,wav,midi,avi等格式,不支持rm或rmvb或ogg等)

mciSendString( "open die.wav alias dieMusic",NULL,0,NULL ); //同上

srand( timeGetTime() ); //随机种子,使得每次随机不一样

FoodRand();

}

void GameFrame()

{

static  int iStep = timeGetTime(); //速度限制一下

if( timeGetTime()-iStep  300 ) //300毫秒移动一次,想快点可以改,也可以作为难度递增,改小此值

{

iStep = timeGetTime();

InputProcess();

LogicProcess();

}

WndDrawProcess();

}

void InputProcess() //输入处理

{

//控制蛇运动

if( iKey == VK_UP ) //如果按下“上”键,其他按键可以自己改,VK_开头,如果是字母或数字按键,则对应ASCII码

{

if( iSnakeDir == DIR_LT || iSnakeDir == DIR_RT ) //若蛇正往左右走时才能改变

{

iSnakeDir = DIR_UP;

}

}

else if(  iKey == VK_DOWN ) //以此类推

{

if( iSnakeDir == DIR_LT || iSnakeDir == DIR_RT )

{

iSnakeDir = DIR_DN;

}

}

else if(  iKey == VK_LEFT )

{

if( iSnakeDir == DIR_UP || iSnakeDir == DIR_DN )

{

iSnakeDir = DIR_LT;

}

}

else if(  iKey == VK_RIGHT )

{

if( iSnakeDir == DIR_UP || iSnakeDir == DIR_DN )

{

iSnakeDir = DIR_RT;

}

}

//蛇运动,其实蛇的运动就是蛇头根据方向往前走一步,而蛇尾去掉一步,

//如果转化为算法就是在队列前根据方向加入一个节点,去掉队列最后一个节点,好好理解,算法的重要性

ptHead = g_SnakeDeque.front(); //获取第一个节点

if( iSnakeDir == DIR_UP )

{

ptHead.y -= 30;

}

else if( iSnakeDir == DIR_DN )

{

ptHead.y += 30;

}

else if( iSnakeDir == DIR_LT )

{

ptHead.x -= 30;

}

else if( iSnakeDir == DIR_RT )

{

ptHead.x += 30;

}

}

void LogicProcess() //逻辑处理

{

//蛇出界了或者蛇吃到自己身体了,需要死掉

if( ptHead.x  0 || ptHead.x = 600 || ptHead.y 0 || ptHead.y = 600 || IsInSnake(ptHead) )

{

mciSendString( "play dieMusic from 0",NULL,0,NULL ); //播放死亡音乐

g_SnakeDeque.clear(); //全清

POINT ptSnake = {300,300}; //定义蛇的位置

g_SnakeDeque.push_back( ptSnake ); //放入蛇的节点中

iSnakeDir = rand()%4; //随机蛇运动方向

iLife--; //死亡,生命减1

if( iLife = 0 )

{

bIsDie = true;

g_hDC = GetDC(g_hWnd);

g_Shibai.Draw(g_hDC,0,0);

ReleaseDC(g_hWnd,g_hDC);

int ret = MessageBox(g_hWnd,"3次生命已用完 \n 是否重新开始程序!","提示",MB_OKCANCEL);

if (ret == IDOK)

{

FoodRand();

return;

}

DestroyWindow(g_hWnd); //摧毁关闭窗口

return;

}

}

else if( ptHead.x==g_FoodPos.x  ptHead.y==g_FoodPos.y ) //蛇吃到食物

{

mciSendString( "play eatMusic from 0",NULL,0,NULL ); //播放吃到食物音乐

g_SnakeDeque.push_front( ptHead ); //新的位置加入蛇头,蛇头往前移动

//g_SnakeDeque.pop_back(); //和正常行走最大的不同

FoodRand(); //重新随机食物

}

else //无出界,无吃到自身,无吃到食物,正常行走

{

g_SnakeDeque.push_front( ptHead ); //新的位置加入蛇头,蛇头往前移动

g_SnakeDeque.pop_back(); //删除最后节点,蛇尾往前收

}

}

void WndDrawProcess() //绘图处理

{

RECT rc = {0,0,BMP_WIDTH,BMP_HEGITH};

FillRect(g_hBufDC,rc,(HBRUSH)GetStockObject(WHITE_BRUSH));

g_Bg.Draw(g_hBufDC,0,0);//绘制背景

g_hDC = GetDC(g_hWnd);

for( UINT i=0; ig_SnakeDeque.size(); i++ ) //遍历蛇的节点,绘画蛇的样子

{

if( i== 0 )

{

g_Head.Draw( g_hBufDC, g_SnakeDeque[i].x, g_SnakeDeque[i].y ); //绘画蛇头

}

else if( i == g_SnakeDeque.size()-1 )

{

g_Rear.Draw( g_hBufDC, g_SnakeDeque[i].x, g_SnakeDeque[i].y ); //绘画蛇尾

}

else

{

g_Snake.Draw( g_hBufDC, g_SnakeDeque[i].x, g_SnakeDeque[i].y ); //绘画蛇身,把蛇的样子画到指点位置节点上

}

}

//绘画食物

g_Food.Draw( g_hBufDC, g_FoodPos.x, g_FoodPos.y );

if (bIsDie)

{

iLife = 3;

bIsDie = false;

}

//绘画生命数

char sz[32] = {0};

for( int i=0; iiLife; i++ )

{

strcat_s( sz, " ★"); //根据生命数,加入红心

}

SetTextColor( g_hBufDC, RGB(255,0,0) );//设置字体颜色为红色

SetBkMode( g_hBufDC,TRANSPARENT ); //设置字体背景颜色为透明

TextOut( g_hBufDC,0,0,sz,strlen(sz)); //输出字体

BitBlt(g_hDC,0,0,BMP_WIDTH,BMP_HEGITH,g_hBufDC,0,0,SRCCOPY);

ReleaseDC(g_hWnd,g_hDC);

}

int APIENTRY _tWinMain(HINSTANCE hInstance,

   HINSTANCE /*hPrevInstance*/,

   LPTSTR    /*lpCmdLine*/,

   int       nCmdShow)

{

MSG msg;

MyRegisterClass(hInstance);

int iW = 600+GetSystemMetrics(SM_CXFIXEDFRAME)*2;

int iH = 600+GetSystemMetrics(SM_CYFIXEDFRAME)*2+GetSystemMetrics(SM_CYCAPTION);

int iX = (GetSystemMetrics(SM_CXSCREEN)-iW)/2;

int iY = (GetSystemMetrics(SM_CYSCREEN)-iH)/2;

g_hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,

iX, iY, iW, iH, NULL, NULL, hInstance, NULL);

if (!g_hWnd)

{

return FALSE;

}

GameInit();

ShowWindow(g_hWnd, nCmdShow);

UpdateWindow(g_hWnd);

ZeroMemory(msg,sizeof(MSG));

while (msg.message != WM_QUIT)

{

if (PeekMessage(msg, NULL, 0, 0,PM_REMOVE))

{

TranslateMessage(msg);

DispatchMessage(msg);

}

else if(!bAtc)

{

GameFrame();

}

else

{

::WaitMessage();

}

}

return (int) msg.wParam;

}

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SNAKE));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassEx(wcex);

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_KILLFOCUS:

bAtc = true;

break;

case WM_SETFOCUS:

bAtc = false;

break;

case WM_KEYDOWN:

iKey = wParam; //玩家按下按键是捕获按键值

break;

case WM_DESTROY:

DeleteObject(g_hBufBmp);

DeleteDC(g_hBufDC);

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

vs2010怎么编译源代码

我估计你是编译那个按钮都不能点,是这样的,VS和VC有个很大的区别,VS需要被编译的对象必须形成一个PROJECT才行,意思就是,你直接打开一个CPP的文件,绝对是编译不了,只能先建立一个工程,再把文件加进去,然后编译的时候是编译整个工程。具体操作大概就是文件菜单里点新建,然后选择源代码对应的项目,建一个空的项目,再把源代码文件添加进去或者开始写

如何使用VS2013运行已有源代码?

看看源代码中是否有个文件是以.sln结尾的,这个文件是源代码的工程文件,如果是的话,双击打开就会自动使用VS2013打开源代码了

如果没有.sln文件的话,双击源代码中以.csproj结尾的文件也可以

利用VS调试源代码,显示无可用源,如图所示

1、首先点击VS的调试菜单按钮后,就能点击图形二级菜单。

2、然后就能在三级菜单中,点击启动图形调试。

3、这时候,还能直接按下快捷键快速启动图形调试。

4、然后点击运行,在运行界面中,既可以看到这样的窗体被运行,

5、因此这时候,就能在这里看到图形调试的报告。通过报告这里,可以看到程序的线程以及内存等内容的详细信息。

用VS 如何由源代码生成DLL文件

1:创建DLL工程

文件-新建-项目-visual c++-win32-win32控制台应用程序(win32项目也可以)

填写项目名称MyDLL-确定-下一步-DLL(附加选项 对空项目打钩)-完成。

到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。

MyDLL.cpp内容如下:

1 #include  

2 using namespace std; 

3 #include "MyDLL.h" 

4  

5 int Add(int a,int b) 

6 { 

7     return a+b;  

8 }

MyDLL.h内容如下:

1 #pragma once

2  

3 extern "C" __declspec(dllexport) int Add(int a,int b);

点击生成Bulid --Bulid MyDLL,dll文件就生成了,vs2008不能直接生成lib文件,这个时候就需要我们在建立dll工程的时候 再新建一个def文件,默认生成然后重新生成就能够得到lib文件了,但可以通过修改工程属性里面的general-project default-configure type修改为lib,就可以生成lib文件。

注意:如果在已存在的工程上创建dll或者lib,不需要修改工程,只要把工程属性里面的general-project default-configure type修改为lib或者dll,就可以生成lib文件或者dll文件了

在C++程序中使用刚才生成的DLL文件步骤:

新建一个win32 控制台工程,取名testMyDLL,新建两个文件:testMyDLL.cpp和testMyDLL.h,

首先需要 隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。新建“控制台应用程序”或“空项目”。配置如下:(这一点非常重要)

项目-属性-配置属性-VC++ 目录- 在“包含目录”里添加头文件MyDLL.h所在的目录

项目-属性-配置属性-VC++ 目录- 在“库目录”里添加头文件MyDLL.lib所在的目录 

项目-属性-配置属性-链接器-输入- 在“附加依赖项”里添加“MyDLL.lib”(若有多个 lib 则以空格隔开)

testMyDLL.cpp内容如下:

#include "testMyDLL.h" 

#pragma comment(lib,"..\\debug\\MyDLL.lib")//可以写成绝对路径,但是路径一定要用\\来指明,即:J:\\Pr//ograms\\C++\\Practice\\DLLTEST\\DLLtest\\Debug\\MyDLL.lib"#include  

using namespace std;

int main() 

{

int a =3;

int b =2;

coutAdd(a,b)endl;

getchar();

}  

testMyDLL.h内容如下

#pragma once

extern "C" _declspec(dllexport) int Add(int a,int b);

现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)

这里需要注意testMyDLL.cpp文件中调用lib的这句话:

#pragma comment(lib,"..\\debug\\MyDLL.lib")

这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。

注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用

关于vs源代码实例和vs2015项目开发实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/29989.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载