vs源代码实例(vs2015项目开发实例)
admin 发布:2022-12-19 23:23 151
本篇文章给大家谈谈vs源代码实例,以及vs2015项目开发实例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何在VS2010中运行写好的C#的源代码
- 2、求VS得贪吃蛇源代码!谢谢大神 还有个问题在VS中写#include应输入预处理器指令
- 3、vs2010怎么编译源代码
- 4、如何使用VS2013运行已有源代码?
- 5、利用VS调试源代码,显示无可用源,如图所示
- 6、用VS 如何由源代码生成DLL文件
如何在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站长 原创,转载请注明出处和附带本文链接;
- 上一篇:php100代码(php100视频教程)
- 下一篇:大型网站源代码(网站首页源代码)
相关推荐
- 05-01股票网站源代码(股票app源码)[20240501更新]
- 05-01发布站源代码下载(下载源码的网站)[20240501更新]
- 05-01jeebbs源代码(jeesite代码生成)[20240501更新]
- 05-01企业导航条源代码(导航系统源码)[20240501更新]
- 05-01购物网站asp.net源代码(购物网站jsp完整源码)[20240501更新]
- 05-01wordpress运行代码(wordpress 源代码)[20240501更新]
- 05-01html5留言板源代码(java留言板代码)[20240501更新]
- 04-30火锅店网站源代码(火锅店网页)[20240430更新]
- 04-30关于数据录入查询系统asp源代码的信息[20240430更新]
- 04-30vb解密代码(vb源代码加密)[20240430更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接