欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
森林冰火人C++源程序
[打印本頁]
作者:
Yuqiancha
時間:
2019-11-30 10:55
標題:
森林冰火人C++源程序
游戲 森林冰火人c++// SnowBros.cpp: 定義控制臺應用程序的入口點。
//
#pragma once
#include "stdafx.h"
#include "Stage.h"
#include "Player.h"
#include "Snowball.h"
IMAGE background_img, title_img, begin_img, game_help_img, move_rule_img;
IMAGE return_img, onemode_img, twomode_img;
int player_cnt = 0;
void ShowMenu()
{
putimage(0, 0, &background_img);
putimage(4 * UNIT, UNIT, &title_img);
putimage(8 * UNIT, 8 * UNIT, &begin_img);
putimage(8 * UNIT, 10 * UNIT, &game_help_img);
}
void ShowHelp()
{
putimage(0, 0, &background_img);
putimage(100, 100, &move_rule_img);
putimage(22 * UNIT, 0, &return_img);
}
void ShowMode()
{
putimage(0, 0, &background_img);
putimage(4 * UNIT, UNIT, &title_img);
putimage(22 * UNIT, 0, &return_img);
putimage(10 * UNIT, 9 * UNIT, &onemode_img);
putimage(10 * UNIT, 11 * UNIT, &twomode_img);
}
bool OkHit(char ch)
{
if (ch == 'a' || ch == 'd' || ch == 'j' || ch == 'k')
return true;
if (player_cnt == 2)
{
if (ch == 37 || ch == 39 || ch == '1' || ch == '2')
return true;
}
return false;
}
vector<char> MyKbHit()
{
vector<char> ret;
if (GetAsyncKeyState('A') < 0)
ret.push_back('a');
if (GetAsyncKeyState('D') < 0)
ret.push_back('d');
if (GetAsyncKeyState('J') < 0)
ret.push_back('j');
if (GetAsyncKeyState('K') < 0)
ret.push_back('k');
if (GetAsyncKeyState(VK_LEFT) < 0)
ret.push_back('<');
if (GetAsyncKeyState(VK_RIGHT) < 0)
ret.push_back('>');
if (GetAsyncKeyState(VK_NUMPAD2) < 0)
ret.push_back('2');
if (GetAsyncKeyState(VK_NUMPAD3) < 0)
ret.push_back('3');
return ret;
}
extern void LoadMap(Stage &gk);
extern vector<Player> InitPlayer(Stage &gk, int mode);
extern void LoadPlayer(vector<Player> &player);
extern void ControlPlayer(Player &pl, char hit);
extern void SnowBallNewPos(queue<SnowBall> &q);
bool GoGoGo(int level)
{
Stage gk;
gk.Init(level);
vector<Player> player = InitPlayer(gk, player_cnt);
queue<SnowBall> ball;
vector<char> hit;
BeginBatchDraw();
while (1)
{
LoadMap(gk);
LoadPlayer(player);
LoadSnowBall(ball);
FlushBatchDraw();
//LoadBar();
//LoadMonster();
hit = MyKbHit();
if (hit.size())
{
for (int i = 0; i < hit.size(); i++)
{
if (hit[i] == 'a' || hit[i] == 'd' || hit[i] == 'j' || hit[i] == 'k')
ControlPlayer(player[1], hit[i], ball);
else if (player_cnt == 2)
{
if (hit[i] == '<')
hit[i] = 'a';
else if (hit[i] == '>')
hit[i] = 'd';
else if (hit[i] == '2')
hit[i] = 'j';
else if (hit[i] == '3')
hit[i] = 'k';
ControlPlayer(player[2], hit[i], ball);
}
}
}
for (int i = 1; i < player.size(); i++)
PlayerNewPos(player[i], gk);
SnowBallNewPos(ball);
Sleep(10);
}
return 0;
}
void BeginGame()
{
int level = 1;
while (level <= 1) //關卡總數
{
if (GoGoGo(level))
{
level++;
continue;
}
else
break;
}
if (level == 1) //關卡總數
; //通關
return;
}
//判斷鼠標是否點擊到圖片上,(left,up)為putimage的左上角
bool ClickOn(MOUSEMSG m, IMAGE a, int left, int up)
{
int x = m.x, y = m.y;
int right = left + a.getwidth(), down = up + a.getheight();
if (left <= x && x <= right && up <= y && y <= down)
return true;
return false;
}
void InitLoadImage()
{
settextstyle(50, 0, _T("宋體")); //初始化字體
loadimage(&background_img, _T(".\\img\\background.jpg"));
loadimage(&title_img, _T(".\\img\\title.bmp"));
loadimage(&begin_img, _T(".\\img\\begin_game.bmp"));
loadimage(&game_help_img, _T(".\\img\\game_help.bmp"));
loadimage(&move_rule_img, _T(".\\img\\move_rule.bmp"));
loadimage(&return_img, _T(".\\img\\return.jpg"));
loadimage(&onemode_img, _T(".\\img\\onemode.bmp"));
loadimage(&twomode_img, _T(".\\img\\twomode.bmp"));
}
int main()
{
// for debug
/*
initgraph(1200, 700);
wstring s = L"hello world";
outtext(s.c_str());
getchar();
return 0;
*/
initgraph(1200, 700); // 創建繪圖窗口,大小為 1200*700 像素
InitLoadImage();
MOUSEMSG click;
while (1)
{
ShowMenu();
while (1)
{
click = GetMouseMsg();
if (click.mkLButton == true)
break;
}
if (ClickOn(click, begin_img, 8 * UNIT, 8 * UNIT))
{
ShowMode(); //選擇游戲模式
player_cnt = 0;
while (1)
{
click = GetMouseMsg();
if (click.mkLButton == true)
{
if (ClickOn(click, onemode_img, 10 * UNIT, 9 * UNIT))
player_cnt = 1;
else if (ClickOn(click, twomode_img, 10 * UNIT, 11 * UNIT))
player_cnt = 2;
else if (ClickOn(click, return_img, 22 * UNIT, 0))
break; //返回菜單
}
if (player_cnt)
{
BeginGame();
break;
}
}
}
else if (ClickOn(click, game_help_img, 8 * UNIT, 10 * UNIT))
{
ShowHelp(); //查看游戲幫助
while (1)
{
click = GetMouseMsg();
if (click.mkLButton == true && ClickOn(click, return_img, 22 * UNIT, 0))
break;
}
}
}
getchar();
closegraph(); // 關閉繪圖窗口
return 0;
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1