#include "Star.cpp"
#include "SmallStar.cpp"
#include "FlyText.cpp"
#include "FlyScore.cpp"
#include "FlySummary.cpp"
#include "FlyStageClear.cpp"
#include "FlyGood.cpp"
#include "FlyCool.cpp"
#include "FlyBomb.cpp"
#include "FlyBrush.cpp"
#include "FlyGameOver.cpp"
#include "Record.cpp"
////////////////////////////////////////////////////////
Game::Game()
{
iShakeTime=0;
tagFlyAction=false;
tagLockUserAction=false;
iStage=1;
iTargetScore=0;
iScore=0;
iEchoScore=0;
iGameStatus=0;
/////////////////////////////////
iTime[0]=0;
iTime[1]=0;
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++){iRandomRank[i]=0;}
iRandomIndex=0;
iSelectedStarNum=0;
iSelectedStarNum_Deleted=0;
iRemainedStarNum=0;
iRemainedStarNum_Deleted=0;
iHintTime=0;
SetName("游戏核心");
iBombNum=3;
iBrushNum=3;
}
///////////////////////////////////////////////////////
POINT newCursor,oldCursor;//实时记录当前鼠标所在位置
///////////////////////////////////////////////////////
void Game::Auto(HDC hDC)
{
if(iHintTime<100)iHintTime++;
//游戏控制开始
if(iGameStatus==0)
{
tagLockUserAction=true;
mReadyGo.Play();
if(MusicButtons.tagBgMusic==false)mRoundStart.Play();
//根据关级计算出通过本关需要的分数
iTargetScore=10000;
FlyStageClears.tagValid=false;
//初始化星星
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
Stars[i].ColorIndex=-1;
Stars[i].RoadIndex=0;
Stars[i].tagBomb=false;
Stars[i].tagBrush=false;
Stars[i].iBlinkTime=0;
}
//计算并移动星星到对应的位置
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
Stars[i].PosIndex=i;
}
iGameStatus=10;
}
if(iGameStatus==10)
{
tagLockUserAction=true;
FlyTexts.MoveTo(CustomRect.right+130,CustomRect.bottom/2);
FlyTexts.SpdX=-25;
FlyTexts.AclX=1;
iGameStatus++;
}
if(iGameStatus==11)
{
tagLockUserAction=true;
if(FlyTexts.SpdX>=0)
{
FlyTexts.SpdX=0;
FlyTexts.AclX=0;
iTime[0]=0;
iGameStatus++;
}
}
if(iGameStatus==12)
{
tagLockUserAction=true;
if(iTime[0]++>40)
{
FlyTexts.SpdX=10;
FlyTexts.AclX=-1;
iGameStatus++;
}
}
if(iGameStatus==13)
{
tagLockUserAction=true;
if(FlyTexts.Area.ax<-100)
{
FlyTexts.SpdX=0;
FlyTexts.AclX=0;
iTime[0]=0;
iGameStatus=20;
}
}
if(iGameStatus==20)
{
tagLockUserAction=true;
//随机化显示彩色星星
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
iRandomRank[i]=i;
}
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
Swap(iRandomRank[i],iRandomRank[Rand()%(STARMATRIXMAXNUM*STARMATRIXMAXNUM)]);
}
iTime[0]=0;
iRandomIndex=0;
iGameStatus++;
}
if(iGameStatus==21)
{
tagLockUserAction=true;
if(iTime[0]++>=0)
{
if(iRandomIndex<STARMATRIXMAXNUM*STARMATRIXMAXNUM)
{
if(iRandomIndex<STARMATRIXMAXNUM*STARMATRIXMAXNUM)Stars[iRandomRank[iRandomIndex++]].ColorIndex=Rand()%STARCOLOURMAXNUM;
if(iRandomIndex<STARMATRIXMAXNUM*STARMATRIXMAXNUM)Stars[iRandomRank[iRandomIndex++]].ColorIndex=Rand()%STARCOLOURMAXNUM;
if(iRandomIndex<STARMATRIXMAXNUM*STARMATRIXMAXNUM)Stars[iRandomRank[iRandomIndex++]].ColorIndex=Rand()%STARCOLOURMAXNUM;
iTime[0]=0;
}
else
{
for(int i=0;i<3;i++)
{
Stars[Rand()%(STARMATRIXMAXNUM*STARMATRIXMAXNUM)].tagBomb=true;
Stars[Rand()%(STARMATRIXMAXNUM*STARMATRIXMAXNUM)].tagBrush=true;
}
iGameStatus=30;
iTime[0]=0;
}
}
}
if(iGameStatus==30)
{
//没有剩余可以消除的星星
if(CheckGame()==true && tagFlyAction==false && tagLockUserAction==false)
{
iGameStatus=40;
tagLockUserAction=true;
if(1)for(int i=0;i<2;i++)
{
BoxButtons[i].tagSelected=false;
}
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
Stars[i].tagSelected=false;
}
}
}
if(iGameStatus==31)
{
tagLockUserAction=true;
if(iTime[0]++>=3)
{
iTime[0]=0;
if(DeleteSelectedStar()==false)
{
Games.iSelectedStarNum_Deleted=0;
//重新确定所有星星的目标位置
RelocationStar();
//重置删除星星的状态,开始进入星星移动状态
iGameStatus=30;
}
}
}
if(iGameStatus==40)
{
//等待所有星星都停止移动后再进行判断
if(tagLockUserAction==false)
{
if(iTime[0]++>10)
{
iTime[0]=0;
mStageOver.Play();
iRemainedStarNum=GetStarNum(false);
iRemainedStarNum_Deleted=0;
iGameStatus++;
}
}
tagLockUserAction=true;
}
if(iGameStatus==41)
{
tagLockUserAction=true;
if(iTime[0]++>40)
{
iGameStatus++;
iTime[0]=0;
}
}
if(iGameStatus==42)
{
tagLockUserAction=true;
if(iTime[0]++>20)
{
iGameStatus++;
iTime[0]=0;
}
}
if(iGameStatus==43)
{
tagLockUserAction=true;
if(iTime[0]++>=3)
{
iTime[0]=0;
if(DeleteRemainedStar()==false)
{
iTime[0]=0;
iGameStatus++;
}
}
}
if(iGameStatus==44)
{
tagLockUserAction=true;
if(iTime[0]++>40)
{
iTime[0]=0;
tagLockUserAction=true;
///////////////////////
int score=Max(0,2000-Games.iRemainedStarNum_Deleted*100);
if(score!=0)CreateFlyScore(CustomRect.right/2,260,-1,score);
///////////////////////
if(1)
{
int fireMethod=Rand()%2;
////////////////////////////////////////////
switch(fireMethod)
{
case 0:mFireworks1.Play();break;
case 1:mFireworks2.Play();break;
}
////////////////////////////////////////////
for(int k=0;k<20;k++)
{
CreateSmallStar(CustomRect.right/2,260,Rand()%STARCOLOURMAXNUM);
}
}
iGameStatus++;
}
}
if(iGameStatus==45)
{
tagLockUserAction=true;
//保存便于批量操作的星星指针
if(1)for(int i=0;i<STARMATRIXMAXNUM*STARMATRIXMAXNUM;i++)
{
ptStars[i]=NULL;
}
if(iTime[0]++>50)
{
iGameStatus=50;
iTime[0]=0;
}
}
if(iGameStatus==50)
{
tagLockUserAction=true;
iGameStatus=70;
}
if(iGameStatus==70)
{
tagLockUserAction=true;
mGameMusic.Stop();
mGameover.Play();
CreateFlyGameOver();
iTime[0]=0;
iGameStatus++;
}
if(iGameStatus==71)
{
tagLockUserAction=true;
if(iTime[0]++>60)
{
InsertObjectIntoLayer(2,&StartGameButtons);
iTime[0]=0;
iGameStatus++;
}
}
if(iGameStatus==72)
{
tagLockUserAction=true;
if(iTime[0]++>5)
{
InsertObjectIntoLayer(2,&SubmitScoreAnchors);
iTime[0]=0;
iGameStatus++;
}
}
if(iGameStatus==73)
{
tagLockUserAction=true;
}
//判断用户鼠标是否移动或用户输入是否锁定,如果是则重置颤抖时间,否则计时自加
if(1)
{
oldCursor=newCursor;
GetCursorPos(&newCursor);
if(newCursor.x!=oldCursor.x || newCursor.y!=oldCursor.y || tagLockUserAction==true)
{
iShakeTime=0;
}
else
{
if(iShakeTime<300)
{
iShakeTime++;
}
}
}
}
void Game::Save(FILE *fp)
{
fwrite(&iShakeTime,sizeof(int),1,fp);
fwrite(&tagFlyAction,sizeof(bool),1,fp);
fwrite(&tagLockUserAction,sizeof(bool),1,fp);
fwrite(&iStage,sizeof(int),1,fp);
fwrite(&iTargetScore,sizeof(int),1,fp);
fwrite(&iScore,sizeof(int),1,fp);
fwrite(&iEchoScore,sizeof(int),1,fp);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
消灭星星PopStar源码 (139个子文件)
Script.aps 541KB
PopStar.bmp 142KB
GameOver.bmp 75KB
City.bmp 62KB
StageClear.bmp 55KB
Good.bmp 22KB
Cool.bmp 22KB
StartGame.bmp 19KB
ContinueGameBlack.bmp 19KB
ContinueGameWhite.bmp 19KB
Star.bmp 16KB
Bomb.bmp 7KB
Brush.bmp 7KB
Pause.bmp 2KB
SmallStar.bmp 1KB
Music.bmp 838B
Game.cpp 15KB
PopStar.cpp 13KB
GamePage.cpp 12KB
Star.cpp 12KB
MainPage.cpp 11KB
Basic.cpp 9KB
Layer.cpp 6KB
FlyScore.cpp 4KB
Object.cpp 3KB
FlyCool.cpp 3KB
FlyGood.cpp 3KB
FlyBrush.cpp 3KB
FlyBomb.cpp 3KB
Window.cpp 3KB
SmallStar.cpp 3KB
FlyStageClear.cpp 2KB
Rect.cpp 2KB
FlySummary.cpp 2KB
Music.cpp 2KB
Button.cpp 2KB
Anchor.cpp 2KB
CheckBox.cpp 2KB
FlyText.cpp 1KB
FlyGameOver.cpp 1KB
Shadow.cpp 653B
NetAddress.cpp 378B
Library.cpp 269B
Point.cpp 69B
Interface.cpp 50B
Record.cpp 44B
Thumbs.db 54KB
PopStar.dsp 16KB
PopStar.dsw 522B
消灭星星v1.0.6.exe 956KB
PopStar.exe 948KB
Basic.h 4KB
MainPage.h 2KB
GamePage.h 2KB
Game.h 2KB
Object.h 2KB
Music.h 1KB
Layer.h 1KB
Star.h 1KB
resource.h 1KB
Rect.h 869B
Window.h 579B
CheckBox.h 520B
FlyBrush.h 503B
FlyBomb.h 495B
SmallStar.h 486B
FlySummary.h 480B
Anchor.h 468B
Button.h 467B
FlyScore.h 448B
FlyStageClear.h 414B
FlyGood.h 392B
FlyCool.h 392B
FlyGameOver.h 285B
NetAddress.h 274B
Library.h 247B
Shadow.h 217B
FlyText.h 169B
Point.h 108B
Record.h 83B
Interface.h 46B
icon.ico 36KB
vc60.idb 289KB
PopStar.ilk 445KB
game_music.mp3 122KB
game_music.mp3 122KB
round_clear.mp3 113KB
round_clear.mp3 113KB
firecrackers.mp3 49KB
firecrackers.mp3 49KB
broken.mp3 27KB
broken.mp3 27KB
ready_go.mp3 8KB
ready_go.mp3 8KB
discovery_01.mp3 6KB
discovery_01.mp3 6KB
effect_01.mp3 6KB
effect_01.mp3 6KB
discovery_02.mp3 5KB
discovery_02.mp3 5KB
共 139 条
- 1
- 2
zhooyucn
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页