void mouse(Graph graph[15]){ int pointX, pointY; static int i; static int clickFlg; static int graphClickFlg=-1;//-1:クリックされてない,0-14:画像をクリックした static int graphStatus[15] = { 0 }; //左クリックされたかどうか if ((GetMouseInput() & MOUSE_INPUT_LEFT) != 0 && !clickFlg){ GetMousePoint(&pointX, &pointY); clickFlg = 1; if (graphClickFlg >= 0){ graphStatus[graphClickFlg] = 2; graphClickFlg = -1; }else{ //当たり判定を以て画像の状態を変更する for (i = 0; i < 15; i++){ if (collision_rect(graph[i].x, graph[i].y, graph[i].width, graph[i].height, pointX, pointY)){ graphStatus[i] = 1; graphClickFlg = i; }else{ graphStatus[i] = 0; } } } }else if ((GetMouseInput() & MOUSE_INPUT_LEFT) == 0){ clickFlg = 0; }else{ } graph_click(graph,graphStatus); }
void suken::CMouse::Loop(){ GetMousePoint( &mouseX, &mouseY ); preMouseInput = mouseInput; if(IsLeft){ mouseInput = (bool)( GetMouseInput() & MOUSE_INPUT_LEFT ); }else{ mouseInput = (bool)( GetMouseInput() & MOUSE_INPUT_RIGHT ); } }
// ---------------------------------------------------- // Mouse::CheckMouseEvent // ---------------------------------------------------- void Mouse::_CheckMouseEvent() { // マウスのX, Y座標を取得するための変数 int MouseX, MouseY; // ------------------------------------------------ // もしマウスが押されていて if(GetMouseInput() & MOUSE_INPUT_LEFT){ // 初めて押されてたなら if(_MousePushTimeLeft < 0){ // 0にリセット _MousePushTimeLeft = 0; } // インクリメントする _MousePushTimeLeft++; } // もしマウスが押されていなくて else{ // 初めて離されたなら if(_MousePushTimeLeft > 0){ // 0にリセット _MousePushTimeLeft = 0; } // デクリメントする _MousePushTimeLeft--; } // もしマウスが押されていて if(GetMouseInput() & MOUSE_INPUT_RIGHT){ // 初めて押されてたなら if(_MousePushTimeRight < 0){ // 0にリセット _MousePushTimeRight = 0; } // インクリメントする _MousePushTimeRight++; } // もしマウスが押されていなくて else{ // 初めて離されたなら if(_MousePushTimeRight > 0){ // 0にリセット _MousePushTimeRight = 0; } // デクリメントする _MousePushTimeRight--; } // 現在位置を取得 GetMousePoint( &MouseX, &MouseY ); // 現在の座標を保存 _MouseBeforeLoc = _MouseLocation; // 取得した結果を代入する _MouseLocation( MouseX, MouseY); // 終了 return; }
bool MyInput::UpdateMouse(){ int tmpMouse = GetMouseInput(); //マウスの入力状態 int tmpMouseX, tmpMouseY; //マウスの座標 GetMousePoint(&tmpMouseX, &tmpMouseY); //マウスの座標を取得 mousePoint = Pos(tmpMouseX, tmpMouseY); for (int i = 0; i < MouseButNum; i++){ if (tmpMouse & MouseMasks[i]){ //ボタンが押されていれば mouseReleasedPrevCnt[i] += mouseReleasedCnt[i]; mouseReleasedCnt[i] = 0; ++mousePressedCnt[i]; if (mousePressedCnt[i] == 1) { ++mousePressCnt[i]; if (mousePressCnt[i] > 2) { mousePressCnt[i] = 0; } } if (mouseReleasedPrevCnt[i] > InputInterval ) { mouseReleasedPrevCnt[i] = 0; mousePressCnt[i] = 0; } } else{ //ボタンが押されていなければ mousePressedCnt[i] = 0; ++mouseReleasedCnt[i]; mouseReleasedPrevCnt[i] = 0; } } mouseRot = GetMouseWheelRotVol(); //マウスホイールの回転量を取得 mouseRotSum += mouseRot; return true; }
bool CCommon::GetOnRClick(){ if(GetMouseInput()&MOUSE_INPUT_RIGHT && !rclick){ return true; }else{ return false; } }
void C_Save::Update() { C_DataBase::Update(); for (int i = 0; i < 4; i++) { if (IsOnCursorList[i] == true && GetMouseInput() & MOUSE_INPUT_LEFT) { Smgr->Saving(i); } } }
bool FallingObject::HitJudge() { MouseInput = GetMouseInput(); if(( MouseInput & MOUSE_INPUT_LEFT ) == 1 ){ GetMousePoint(&mousex, &mousey); if(sqrt(pow(((double)mousex-x), 2)+pow(((double)mousey-y), 2)) <= 30){ return true; }else{ return false; } } }
bool MusicApple::HitJudge() { MouseInput = GetMouseInput(); if(( MouseInput & MOUSE_INPUT_LEFT ) == 1 ){ GetMousePoint(&mousex, &mousey); if(sqrt(pow(((double)mousex-x), 2)+pow(((double)mousey-y), 2)) <= hit_area){ StopSoundMem(sound_h_demo); return true; }else{ return false; } } }
void Mouse::Update() { Mouse& ins = Instance(); int x, y; GetMousePoint(&x, &y); ins.m_position.x = x; ins.m_position.y = y; ins.m_scrollValue = GetMouseWheelRotVol(); ins.m_previousBuffer = ins.m_currentBuffer; ins.m_currentBuffer = GetMouseInput(); }
int ranking(AI_T ai[],int deth[]){ int hoge,Cr; int j ; int space=0; static int drawX=500,time=100; if(drawX==500){ for(int i=0;i<AI_NUM;i++){ if(ai[i].entry==0)deth[i]=ROUND_MAX+1; ai[i].life = deth[i]; j=i; //main関数よりdeth[]を引数に取り、小さい順に並び替え while(j>0&&deth[j-1]>deth[j]){ hoge = deth[j-1]; deth[j-1] = deth[j]; deth[j] = hoge; j--; } } } space=1; if(drawX>0)drawX-=10; if(drawX<=0){ if(time>0)time--; if(GetMouseInput()==1 && time<=0){ return 1; } } ClearDrawScreen(); for(int i = 0;i<AI_NUM;i++){ for(int k=0;k<AI_NUM;k++){ if(ai[k].life==deth[i]){ if(i>0 && deth[i-1]==deth[i])continue; if(deth[i]<=ROUND_MAX){ Cr = colswitch(i+1); DrawFormatString(100+drawX*space,50+space*35,Cr,"%d 位 %d 回",i+1,deth[i]); DrawString(250+drawX*space,50+space*35,ai[k].name,GetColor(255,0,0)); DrawRotaGraph(400+drawX*space,50+space*35,1,0,ai[k].Graph,TRUE,0); space++; } } } } return 0; }
void CommandButton::Judge(){ if( !(GetMouseInput() & MOUSE_INPUT_LEFT) ){ return; } int x; int y; GetMousePoint( &x , &y ); if ( x > Left && y > Top && x < Left+Width && y < Top + Height ){ if( Func != NULL ){ Func(); } else { Click(); } } }
void InputMouse::Impl::UpdateInput() { int const input_flag[ InputMouse::Type_Num ] = { MOUSE_INPUT_RIGHT, MOUSE_INPUT_LEFT, MOUSE_INPUT_MIDDLE, }; for( int i = 0 ; i < InputMouse::Type_Num ; i++ ) { if( ( GetMouseInput() & input_flag[i] ) == 0 ) { m_press_frame[i] = 0; }else{ m_press_frame[i] ++; } } }
int Mouse::GetDeltaZ() { int posZ = GetMouseInput().z; return (posZ != _relPosZ) ? _relPosZ - posZ : 0; }
int intro(AI_T *ai){ AI_T *init_ai = ai; static int gametitle = LoadGraph("media\\chofu_fes2.bmp"); static int start=0; if(start==0){ start=1; // テンプレ // extern void !初期化関数名!(AI_T &myAi); // !初期化関数名!(ai[!aiの番号!]); // extern Action !移動関数名!(int view[2*VISIBLE+1][2*VISIBLE+1]); // init_ai->moveFunc = !移動関数名!; //!!![重要]!!!!一番初め(aiSample)以外、最初にinit_ai++;を書く!!!!!!!!!! //関数名などが被ると駄目です 名前は早い者勝ちで(基本自分のハンドルネーム) // Player extern void PlayerInit(AI_T &myAi); PlayerInit(*init_ai); extern Action Player(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc = Player; // Player // AI0 (aiSample) init_ai++; extern void aiSampleInit(AI_T &myAi); aiSampleInit(*init_ai); extern Action aiSample(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc = aiSample; // AI0 // AI1 (aiTest) init_ai++; extern void aiTestInit(AI_T &myAi); aiTestInit(*init_ai); extern Action aiTest(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc = aiTest; // AI1 //kuzumi init_ai++; extern void kuzumiInit(AI_T &myAi); kuzumiInit(*init_ai); extern Action kuzumi(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=kuzumi; // //AI_MsZero init_ai++; extern void AI_MsZeroInit(AI_T &myAi); AI_MsZeroInit(*init_ai); extern Action AI_MsZero(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=AI_MsZero; // init_ai++; extern void taoaiInit(AI_T &myAi); taoaiInit(*init_ai); extern Action taoai(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=taoai; init_ai++; extern void AINomeaningInit(AI_T &myAi); AINomeaningInit(*init_ai); extern Action AINomeaning(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=AINomeaning; init_ai++; extern void toshi_aiInit(AI_T &myAi); toshi_aiInit(*init_ai); extern Action toshi_ai(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=toshi_ai; init_ai++; extern void nununuInit(AI_T &myAi); nununuInit(*init_ai); extern Action nununu(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=nununu; init_ai++; extern void KenkinoInit(AI_T &myAi); KenkinoInit(*init_ai); extern Action Kenkino(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=Kenkino; init_ai++; extern void hotaInit(AI_T &myAi); hotaInit(*init_ai); extern Action hota(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=hota; //11 init_ai++; extern void hentekoInit(AI_T &myAi); hentekoInit(*init_ai); extern Action henteko(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=henteko; //12 init_ai++; extern void TsuuroInit(AI_T &myAi); TsuuroInit(*init_ai); extern Action Tsuuro(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=Tsuuro; /*AI追加欄 init_ai++; extern void AI名Init(AI_T &myAi); AI名Init(*init_ai); extern Action AI名(int view[2*VISIBLE+1][2*VISIBLE+1]); init_ai->moveFunc=AI名; */ } int entryX=320,entryY=315; int startX=320,startY=360; static int step=0,window=0,input=0,time=0,bright=255; int mx,my; int en=0; GetMousePoint(&mx,&my); time++; if(time>30)time=0; if(step==0){ if(GetMouseInput()==1){ step=1; } } if(step==1){ if(window<230)window+=23; if(GetMouseInput()==1 && input==0){ if(window>=230){ for(int i= 0; i < AI_NUM ;i++){ int x=20+201*(i%3),y=70+50*(int)(i/3); if(mx>=x && mx<=x+200 && my>=y && my<=y+50){ if(ai[i].entry==0)ai[i].entry=1; else ai[i].entry=0; } } if(mx>=30 && my>=400 && mx<=610 && my<=450){ step=2; window=0; } } } } if(step==2){ bright-=10; if(bright<=0){ SetDrawBright(255,255,255); return 1; } } for(int i=0;i<AI_NUM;i++){ if(ai[i].entry==1)en++; } if(GetMouseInput()==1 && input==0){ input=1; } if(GetMouseInput()==0 && input==1){ input=0; } ClearDrawScreen(); SetDrawBright(bright,bright,bright); DrawGraph(0,0,gametitle,FALSE); int cr=GetColor(125,255,205); if(step==0){ if(time%30<=15){ DrawString(240,350,"Click to start",cr,0); } } /* DrawString(entryX,entryY,"ENTRY AI",cr,0); DrawBox(entryX-80,entryY-20,entryX+80,entryY+20,cr,0); cr=GetColor(255,100,50); DrawString(startX,startY,"START!",cr,0); DrawBox(startX-100,startY-20,startX+100,startY+20,cr,0); */ if(step==1){ cr=GetColor(0,0,0); SetDrawBlendMode( DX_BLENDMODE_ALPHA,200); DrawBox(10,240-window,630,240+window,cr,1); SetDrawBlendMode( DX_BLENDMODE_ALPHA,255); cr=GetColor(255,255,255); DrawBox(10,240-window,630,240+window,cr,0); if(window>=230){ cr=GetColor(125,255,205); DrawString(240,30,"ENTRY AI",cr,0); cr=GetColor(255,255,255); for(int i= 0; i < AI_NUM ;i++){ if(ai[i].entry==0) SetDrawBright(100,100,100); int x=20+201*(i%3),y=70+50*(int)(i/3); DrawBox(x,y,x+200,y+50,cr,0); DrawBox(x,y,x+50,y+50,cr,0); DrawString(x+50,y+25,ai[i].name,GetColor(0,255,255),0); DrawRotaGraph(x+25,y+25,1,0,ai[i].Graph,FALSE,0); SetDrawBright(255,255,255); } cr=GetColor(255,100,50); DrawBox(30,400,610,450,cr,0); DrawString(240,425,"START!",cr,0); } } return 0; //WaitKey(); //WaitTimer(1000/60); }
void Pad::update(){ cur = next; GetHitKeyStateAll( KeyInput[ cur ] ); isInput[ cur ] = CheckHitKeyAll(); MouseInput[ cur ] = GetMouseInput(); }
void CCommon::CheckRClick(){ rclick=false; if(GetMouseInput()&MOUSE_INPUT_RIGHT){ rclick=true; } }
void CameraWorkManager::Update_RotateCamOnGazePoint( double timeslice ) { static const double DrugMoveScale=0.005; // ドラッグ量に対する視点の移動量のパラメータ static Vector2D ScreenDrugStartPoint; // マウスでドラッグを開始したスクリーン上の座標を格納 static Vector2D SavedCamDist; // マウスでドラッグを開始したときの、m_dTilt、m_dHead を保持 static bool nowDruging=false; // 今ドラッグ中か? // キー入力から、m_dTilt と m_dHead を更新 //getKeyInput(); // スクロール操作から、カメラと注視点の距離を更新 getMouseWheelInput(timeslice); // マウスによるドラッグ操作により、m_dTilt と m_dHead を更新 if( nowDruging ) { // 今ドラッグ中 // ドラッグ終了したかを判定 if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) == 0 ) { // ドラッグ終了 nowDruging = false; } else { // 今のマウス位置を取得 Point2D pos; GetMousePoint( &(pos.x) , &(pos.y) ); Vector2D CurMousePos( (double)pos.x, (double)pos.y); // m_dTilt と m_dHead を更新 Vector2D NewCamDist = -DrugMoveScale*(CurMousePos-ScreenDrugStartPoint)+SavedCamDist; m_dTilt = NewCamDist.y; m_dHead = NewCamDist.x; } } else { // ドラッグ中でない // ドラッグ開始したかを判定 int button; Point2D pos; if( GetMouseInputLog( &button, &pos.x, &pos.y, TRUE )==0 && ( button & MOUSE_INPUT_LEFT ) != 0 ) { // ドラッグが開始された // ドラッグ開始時の マウス座標を ScreenDrugStartPoint に保持 ScreenDrugStartPoint = pos.toRealVector(); // ドラッグ開始時の m_dTilt、m_dHead の値を SavedCamDist に保持 SavedCamDist.y = m_dTilt; SavedCamDist.x = m_dHead; // ドラッグフラグを立てる nowDruging = true; } } // m_dHead と m_dTilt から、(GazingPointを原点とした)カメラの位置を計算する Vector3D Hedding3D( 1.0, 0, 0 ); Hedding3D = VTransform( Hedding3D.toVECTOR(), MGetRotZ( (float)m_dTilt ) ); // もしかしたら、マイナスにしないと駄目かも Hedding3D = VTransform( Hedding3D.toVECTOR(), MGetRotY( -1*(float)m_dHead ) ); Vector3D toCamPos3D = m_dCamDistFrmFP * Hedding3D ; // ### ビュー行列を生成を確認 // カメラの座標変換行列のz軸向き(=カメラの向き) Vector3D vViewBaseZ = -1 * Hedding3D; // カメラの座標変換行列のy軸向きを仮置き Vector3D vViewBaseY( 0.0, 1.0, 0.0 ); // カメラの座標変換行列のx軸向き(= y × z ) Vector3D vViewBaseX = VCross( vViewBaseY.toVECTOR(), vViewBaseZ.toVECTOR() ); vViewBaseX = vViewBaseX.normalize(); // カメラの座標変換行列のy軸向きを再調整 vViewBaseY = VCross( vViewBaseZ.toVECTOR(), vViewBaseX.toVECTOR() ); // 基底を組み合わせてカメラ座標変換行列(Entityローカル座標)を生成 MATRIX MCamTransMatLocal = MGetAxis1( //MakeMatrixFromBaseVec( vViewBaseX.toVECTOR(), vViewBaseY.toVECTOR(), vViewBaseZ.toVECTOR(), toCamPos3D.toVECTOR() ); MCamTransMatLocal.m[3][1] += m_TrgtHight; // Entity位置だけシフトしたものがワールド座標でのカメラ座標変換行列 MATRIX MCamTransMatWorld = MCamTransMatLocal; MCamTransMatWorld.m[3][0] += m_TargetPos.x; //MCamTransMatWorld.m[3][1] += m_TrgtHight; <- MCamTransMatLocal の段階でシフト MCamTransMatWorld.m[3][2] += m_TargetPos.z; // 逆行列がビュー行列 m_MViewLocal = MInverse( MCamTransMatLocal ); m_MViewWorld = MInverse( MCamTransMatWorld ); // 背景パノラマ球の描画に使用しているため m_vFinalCamPos を参照している m_vFinalCamPos = VTransform( Vector3D( 0,0,0 ).toVECTOR(), MCamTransMatWorld ); };
int Mouse::GetDeltaX() { int posX = GetMouseInput().positionX; return (posX != _relPosX) ? posX - _relPosX : 0; }
bool Mouse::IsPressedRMB() { bool isPressed = GetMouseInput().button1; _bufferedMouse.button1 = false; return isPressed; }
int Mouse::GetDeltaY() { int posY = GetMouseInput().positionY; return (posY != _relPosY) ? _relPosY - posY : 0; }