三大処理が複数個所にあるとしたら、それはほぼ間違いなく設計に問題があります。
funcがどこから呼ばれているのか分かりませんが、根底となるルーパーから呼ばれているならその中で新たに三大処理をいれるべきではないです。
毎フレームルーパーに処理を返しましょう。
Enterキーが押された瞬間揺れフラグを立てる等して現在揺れていることを識別可能にします。
またカウンターを用意し、カウンターが特定の値になったらフラグを落とします。
一例としてサンプルコードはこんな感じでしょうか。
コード:
#include "DxLib.h"
bool isShaking = false;
int counter = 0;
void shake(){
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
isShaking = true;//何らかのタイミングでフラグを立てる
while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){
if(isShaking){
shake();
counter++;
if(counter>10){
isShaking = false;
}
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}