c++初心者中の初心者です。いま円形のキャラクターをマウスで操作し、周りにいる複数の円形の敵にぶつかったら敵が止まるというプログラムを作っていて、キャラクターと敵を複数作り、動かすとこまでできたのですが、衝突判定の部分がうまくいかずてこずっています。
そこで教えてほしいことがあります、
c++
1#include "ofApp.h" 2float x, y,r1, size1; 3float X1[50], Y1[50], r[50], dx[50], dy[50]; 4int width,height,m, n; 5//-------------------------------------------------------------- 6void ofApp::setup(){ 7 ofBackground(255, 255, 255); 8 width = ofGetWidth(); 9 height = ofGetHeight(); 10 ofSetCircleResolution(64); 11 size1 = 50; 12 n = 15; 13 r1 = 60; 14 x = width / 2; 15 y = height / 2; 16 for (m = 0; m < n; m++) { 17 r[m]= ofRandom(35.0, 50.0); 18 X1[m] = r[m]; 19 Y1[m] = ofRandom(r[m], height - r[m]); 20 dx[m] = ofRandom(5,10); 21 dy[m] = ofRandom(5,10); 22 } 23 24 25 26 27 28} 29 30//-------------------------------------------------------------- 31void ofApp::update(){ 32 33 for (m = 0; m < n; m++) { 34 X1[m] = X1[m] + dx[m]; 35 if (X1[m] <= r[m] || X1[m] >= width - r[m]) { 36 dx[m] = -dx[m]; 37 } 38 Y1[m] = Y1[m] + dy[m]; 39 if (Y1[m] <= r[m] || Y1[m] >= height - r[m]) { 40 dy[m] = -dy[m]; 41 } 42 if (sqrt((x - X1[m])*(x - X1[m]) + (y - Y1[m])*(y - Y1[m])) <= (r[m] + r1)) { 43 cout << "GAME OVER"; 44 dx[m] = 0; 45 dy[m] = 0; 46 break; 47 } 48 } 49 50} 51 52//-------------------------------------------------------------- 53void ofApp::draw(){ 54 int x = mouseX; 55 int y = mouseY; 56 //輪郭 57 ofSetColor(184, 102, 9); 58 ofDrawCircle(x, y, r1); 59 //耳 60 ofSetColor(184, 102, 9); 61 ofDrawEllipse(x - size1 * 0.3067, y - size1 * 0.9833, size1 / 6, size1*0.833); 62 ofDrawEllipse(x + size1 * 0.2933, y - size1 * 0.9833, size1 / 6, size1*0.833); 63 //白目 64 ofSetColor(255, 255, 255); 65 ofDrawEllipse(x - size1 * 0.14, y - size1 * 0.333, size1*0.2333, size1*0.4); 66 ofDrawEllipse(x + size1 * 0.1267, y - size1 * 0.333, size1*0.233, size1*0.4); 67 //黒目 68 ofSetColor(0, 32, 96); 69 ofDrawEllipse(x - size1 * 0.073, y - size1 * 0.3, size1*0.1, size1*0.2); 70 ofDrawEllipse(x + size1 * 0.0667, y - size1 * 0.3, size1*0.1, size1 / 5); 71 //鼻 72 ofSetColor(0, 32, 96); 73 ofDrawEllipse(x + size1 / 30 * 0.1, y, size1 - size1 / 30 * 18.5, size1*0.2667); 74 //鼻テカリ 75 ofSetColor(255, 255, 255); 76 ofDrawRectangle(x - size1 * 0.0733, y - size1 * 0.0667, size1*0.1333, size1*0.067); 77 //右眉毛 78 ofSetColor(0, 32, 96); 79 ofDrawLine(x - size1 / 30 * 10.2, y - size1 / 30 * 13, x - size1 / 30 * 3.2, y - size1 / 30 * 22); 80 ofSetLineWidth(4); 81 //左眉毛 82 ofSetColor(0, 32, 96); 83 ofDrawLine(x + size1 / 30 * 9.8, y - size1 / 30 * 13, x + size1 / 30 * 3.3, y - size1 / 30 * 22); 84 ofSetLineWidth(4); 85 //口 86 ofSetColor(0, 32, 96); 87 ofDrawLine(x - size1 / 30 * 5.2, y + size1 / 30 * 13, x + size1 / 30 * 5.8, y + size1 / 30 * 13); 88 ofSetLineWidth(4); 89 90 //敵 91 for (m = 0; m < n; m++) { 92 //顔 93 ofSetColor(80, 0, 204); 94 ofDrawCircle(X1[m], Y1[m], r[m]); 95 //白目 96 ofSetColor(255, 255, 255); 97 ofDrawCircle(X1[m] - r[m] / 2.5, Y1[m], r[m] / 5); 98 ofDrawCircle(X1[m] + r[m] / 2.5, Y1[m], r[m] / 5); 99 //赤目 100 ofSetColor(255,0,0); 101 ofDrawCircle(X1[m] - r[m] / 2.5, Y1[m], r[m] / 7); 102 ofDrawCircle(X1[m] + r[m] / 2.5, Y1[m], r[m] / 7); 103 } 104 105} 106
どうすれば正常に動きますか?
ぜひとも回答をお願いします。