C++小游戏如何制作微信小游戏插入背景

在c++中小游戏写好了如何发布???跪求。。。。。。_百度知道
在c++中小游戏写好了如何发布???跪求。。。。。。
我有更好的答案
通常你写好程序是如果在VC++6.0中,你会点击那个小红色的惊叹号后运行你的程序,这是系统会生成一个Debug文件夹,下面有可执行文件即EXE文件,这个文件默认是在Debug模式下编译形成的可执行文件,你需要修改配置,在Release下编译,这样系统就会生成一个Release文件夹,里面也有一个EXE文件,它就是你要的文件,可以在任何电脑上运行。具体步骤,在VC++6.0中,对着红色惊叹号右击,选中“组建&,然后会弹出一个对话框,把第二个下拉列表中的Debug改为Release后,再次编译运行,一切就Ok了。如果是Visual studio 2008 或2010,那就更容易了,直接在那个绿色小三角箭(启动调试按钮)头右边更改就行了。
采纳率:54%
不是会生成一个EXE文件么,就是它啊
可是在没有c++的软件的电脑上不能运行啊??
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++可以设计小游戏吗?_百度知道
c++可以设计小游戏吗?
我有更好的答案
当然可以,c++虽然不是最好用的游戏编写软件,确是通用软件,只有你想不到的,没有c做不到的~~~ 很多程序都是c写的底层哦~~~
采纳率:42%
c是程序设计中的核潜艇哈,操作系统都能写,何况是小游戏了
其他1条回答
为您推荐:
其他类似问题
小游戏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。移动的游戏背景的简单实现
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
class MyView extends View{
//背景图片的实际高度
final int BACK_HEIGHT = 1700;
//背景图片
//飞机图片
//显示图片的宽度和高度
final int WIDTH = 640;
final int HEIGHT = 880;
private Matrix matrix = new Matrix();
//背景图片的开始位置
int startY = BACK_HEIGHT - HEIGHT; //820
public MyView(Context context) {
super(context);
back = BitmapFactory.decodeResource(context.getResources() , R.drawable.back_img);
//窗口管理器
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
float screenwidth = metrics.widthP
float screenhight = metrics.heightP
float scale = screenwidth/WIDTH; //显示图片的缩放比例
float scale2 = screenhight/HEIGHT;
matrix.setScale(scale , scale2); //将显示的图片缩放到屏幕大小
plane = BitmapFactory.decodeResource(context.getResources() , R.drawable.plane);
final Handler handler = new Handler(){
public void handleMessage(Message msg) {
if (msg.what == 1){
if (startY &= 3){
startY = BACK_HEIGHT - HEIGHT;
startY -= 3;
invalidate();
new Timer().schedule(new TimerTask() {
public void run() {
handler.sendEmptyMessage(1); //每0.1秒刷新
} , 0 , 100);
protected void onDraw(Canvas canvas) {
Bitmap bitmap2 = Bitmap.createBitmap(back , 0 , startY , WIDTH , HEIGHT , matrix , false);
canvas.drawBitmap(bitmap2 , 0 , 0 ,null); //绘制显示的背景
canvas.drawBitmap(plane , 320 , 700 , null); //绘制飞机
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!编写如何在安卓游戏中插入背景音乐_百度知道
编写如何在安卓游戏中插入背景音乐
我有更好的答案
开个线程播放音乐吧
设置就行了
为您推荐:
其他类似问题
安卓游戏的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C++游戏之透明贴图(四)
上一章,我们已经知道了如何实现游戏动画,是不是很简单哇,这一章,我们就来说说如何透明贴图,我们知道GDI只支持BMP的位图,所以图片本身是不具备透明的,那么,我们如何来实现透明效果呢?很简单,这里介绍两种方式。
第一种:遮罩法
这种方式需要两张图片,第一张为原图,背景为黑色,第二张图为遮罩图,背景为白色,比如有角色素材如下:
通过BitBlt函数的光栅操作即可实现图片背景的透明处理,说简单点就是BitBlt的最后一个参数,白色and任意色=任意色,黑色and任意色=黑色,黑色or任意色=任意色,第一步我们通过SRCAND运算先贴上遮罩图,也就是第二张图片。核心代码如下:
SelectObject(mm_hdc,role);
BitBlt(m_hdc,100,50,254,480,mm_hdc,254,0,SRCAND);//AND运算
通过上述代码,得到以下效果图
第二步:通过SRCPAINT运算贴上彩色图即可实现透明,是不是很简单哇,说白了,整个透明绘制也就是两句话,对同一张图片绘制两次就行了
SelectObject(mm_hdc,role);
BitBlt(m_hdc,100,50,254,480,mm_hdc,254,0,SRCAND);//AND运算,帖上遮罩图
BitBlt(m_hdc,100,50,254,480,mm_hdc,0,0,SRCPAINT);//或运算,帖上彩色图
透明效果如下
第二种:颜色删除法
顾名思义,就是删除某个颜色即可,比如有以下素材图片
观察发现,我们只需要删除黑色颜色即可,删除某个颜色,我们可以使用TransparentBlt函数,使用这个函数,需要一个类库文件
#pragma comment(lib,"Msimg32.lib")
TransparentBlt函数参数:
WINGDIAPI BOOL WINAPI TransparentBlt(
__in HDC hdcDest,//需要绘制的设备环境
__in int xoriginDest,//开始绘制的X坐标
__in int yoriginDest,//开始绘制的Y坐标
__in int wDest,//绘制的宽
__in int hDest,//绘制的高
__in HDC hdcSrc,//源图片的设备环境
__in int xoriginSrc,//从原图的X坐标开始
__in int yoriginSrc,//从原图的Y坐标开始
__in int wSrc,//宽
__in int hSrc,//高
__in UINT crTransparent);//删除的颜色
实列代码如下:
SelectObject(mm_hdc,role2);
TransparentBlt(m_hdc,320,50,500,700,mm_hdc,0,0,500,700,RGB(0,0,0));//RGB(0,0,0)代表黑色
就这样一个透明就实现了,相比较前面一个,这个简单了许多
总结,第一个方法绘制的图形质量高,但是需要两张图片,第二个方法虽然简单了许多,但是缺点也很明显,质量不是很高,如果人物中有与背景相同的颜色,那么也会被去掉,就好很难看。
完整代码:
#include &Windows.h&
#include &string&
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"Msimg32.lib")
//窗体的过程函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam);
HDC g_//设备环境
HDC m_//兼容的设备环境
HDC mm_//三级兼容设备
HBITMAP//背景图片
HBITMAP//素材图片
HBITMAP role2;//素材图片2
//初始化资源,用于初始化设备环境和加载背景图片
void Game_Init(HWND hwnd);
//绘制图形,正式绘制
void Game_Paint(HWND hwnd);
//清理资源,程序退出时,释放资源
void Game_Clear(HWND hwnd);
//WinMain主函数
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrivInstance,LPSTR lpCmdLine,int nShowCmd)
//设计一个窗体
WNDCLASSEX wndClass = {0};
wndClass.style = CS_HREDRAW|CS_VREDRAW;
wndClass.cbSize = sizeof(wndClass);
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
wndClass.hCursor = ::LoadCursor(hInstance,IDC_ARROW);
wndClass.hIcon = (HICON)::LoadImage(NULL,L"",IMAGE_ICON,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE);
wndClass.hInstance = hI
wndClass.lpfnWndProc = WndP
wndClass.lpszClassName = L"Test";
wndClass.lpszMenuName = 0;
//注册窗体
if (!RegisterClassEx(&wndClass))
return -1;
//创建窗体
HWND hwnd = CreateWindow(L"Test",L"GDI",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,800,600,NULL,NULL,hInstance,NULL);
if (hwnd == NULL)
return -1;
//初始化资源
Game_Init(hwnd);
//显示与更新窗体
ShowWindow(hwnd,nShowCmd);
UpdateWindow(hwnd);
//消息队列
MSG msg = {0};
while (msg.message != WM_QUIT)
if (PeekMessage(&msg,0,0,0,PM_REMOVE))//读取消息
TranslateMessage(&msg);//翻译消息
DispatchMessage(&msg);//发送消息
Game_Paint(hwnd);//绘制函数
Sleep(50);//绘制间隙50毫秒
UnregisterClass(L"Test",hInstance);
//窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
switch(message)
case WM_PAINT:
ValidateRect(hwnd,NULL);//重绘整个窗体
case WM_DESTROY:
Game_Clear(hwnd);//退出程序时,清理资源
PostQuitMessage(0);
return DefWindowProc(hwnd,message,wparam,lparam);
//初始化资源
void Game_Init(HWND hwnd)
g_hdc = GetDC(hwnd);//获取设备环境DC
m_hdc = CreateCompatibleDC(g_hdc);//建立兼容的设备环境
mm_hdc = CreateCompatibleDC(m_hdc);
SelectObject(m_hdc,CreateCompatibleBitmap(g_hdc,800,600));
bg = (HBITMAP)LoadImage(NULL,L"bg.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE);
role = (HBITMAP)LoadImage(NULL,L"role.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE);
role2 = (HBITMAP)LoadImage(NULL,L"role2.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE);
//播放背景音乐
//第一个参数,文件路径
//第二参数,应用程序的实例句柄,除非pszSound的指向一个资源标识符(即fdwSound被定义为SND_RESOURCE),否则必须设置为NULL
//第三个参数为标示,SND_LOOP重复播放,SND_ASYNC异步播放,SND_FILENAME来自硬盘文件
//PlaySound(L"bg.wav",0,SND_LOOP | SND_ASYNC | SND_FILENAME);
//绘制图形
void Game_Paint(HWND hwnd)
SelectObject(mm_hdc,bg);
BitBlt(m_hdc,0,0,800,600,mm_hdc,0,0,SRCCOPY);//拷贝到设备环境上
SelectObject(mm_hdc,role);
BitBlt(m_hdc,100,50,254,480,mm_hdc,254,0,SRCAND);//AND运算,帖上遮罩图
BitBlt(m_hdc,100,50,254,480,mm_hdc,0,0,SRCPAINT);//或运算,帖上彩色图
SelectObject(mm_hdc,role2);
TransparentBlt(m_hdc,320,50,500,700,mm_hdc,0,0,500,700,RGB(0,0,0));
BitBlt(g_hdc,0,0,800,600,m_hdc,0,0,SRCCOPY);
//清理内存
void Game_Clear(HWND hwnd)
ReleaseDC(hwnd,g_hdc);
DeleteObject(bg);
DeleteObject(role);
DeleteObject(role2);
DeleteObject(m_hdc);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 微信小游戏如何赚钱 的文章

 

随机推荐