本文整理汇总了C++中collision函数的典型用法代码示例。如果您正苦于以下问题:C++ collision函数的具体用法?C++ collision怎么用?C++ collision使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了collision函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: zombieCollision
//movement of zombies to follow player
void Zombie::move(){
if((x()<player1->x()) && (y()<player1->y())){
zombieCollision();
setPos(x()+.7, y() + .7);
zombieCollision();
collision();
deleteZombie();
direct=1;
}
if((x()>player1->x()) && (y()<player1->y())){
zombieCollision();
setPos(x()-.7,y()+.7);
zombieCollision();
collision();
deleteZombie();
direct=2;
}
if((x()<player1->x()) && (y()>player1->y())){
zombieCollision();
setPos(x()+.7, y() -.7);
zombieCollision();
collision();
deleteZombie();
direct=3;
}
if((x()>player1->x()) && (y()>player1->y())){
zombieCollision();
setPos(x()-.7,y()-.7);
zombieCollision();
collision();
deleteZombie();
direct=4;
}
}
开发者ID:cecrigope,项目名称:Tanks-vs-Zombies,代码行数:38,代码来源:zombie.cpp
示例2: main
int main() {
setMode(MODE_4 | BG2_ENABLE);
startGame();
while(1) {
if (KEY_DOWN_NOW(KEY_START) && state == 0) {
state = 1;
numOfLives = 3;
loadAvatar();
fillPalette(GPalette_palette, 0, GPALETTE_PALETTE_SIZE);
PALETTE[200] = BLACK;
PALETTE[201] = WHITE;
PALETTE[202] = RED;
PALETTE[203] = GREEN;
PALETTE[204] = BLUE;
for (int i = 0; i < 5; i++) {
homeFlags[i] = 0;
}
}
if (state == 1) {
drawBG();
char liveStr[7];
if (numOfLives >= 0) {
sprintf(liveStr, "%d", numOfLives);
drawString4(10, 147, "LIVES LEFT: ", PALETTE[1]);
drawString4(80, 147, liveStr, PALETTE[1]);
}
drawTrucks();
drawCars();
drawCrocodiles();
drawWoods();
drawFrog();
collision();
reset();
delay(2);
waitForVblank();
flipPage();
}
if (state == 2) {
while (1) {
if (KEY_DOWN_NOW(KEY_START)) {
state = 0;
break;
}
}
}
}
return 0;
}
开发者ID:WingyiC,项目名称:Frogger,代码行数:49,代码来源:main.c
示例3: while
/*
Modified from original.
Now invisible sprites may still collide.
*/
void Engine::TestForCollisions()
{
std::list<Entity*>::iterator first;
std::list<Entity*>::iterator second;
Sprite *sprite1;
Sprite *sprite2;
first = p_entities.begin();
while (first != p_entities.end() )
{
//we only care about sprite collisions
if ( (*first)->getRenderType() == RENDER2D )
{
//point local sprite to sprite contained in the list
sprite1 = (Sprite*) *first;
//if this entity is alive and visible...
//if ( sprite1->getAlive() && sprite1->getVisible() && sprite1->isCollidable() )
if ( sprite1->getAlive() && sprite1->isCollidable() )
{
//test all other entities for collision
second = p_entities.begin();
while (second != p_entities.end() )
{
//point local sprite to sprite contained in the list
sprite2 = (Sprite*) *second;
//if other entity is active and not same as first entity...
//if ( sprite2->getAlive() && sprite2->getVisible() && sprite2->isCollidable() && sprite1 != sprite2 )
if ( sprite2->getAlive() && sprite2->isCollidable() && sprite1 != sprite2 )
{
//test for collision
if ( collision(sprite1, sprite2 ) ) {
//notify game of collision
game_entityCollision( sprite1, sprite2 );
}
}
//go to the next sprite in the list
second++;
}
}
//go to the next sprite in the list
first++;
}//render2d
} //while
}
开发者ID:tngoc,项目名称:Wheel-Of-Fortune,代码行数:53,代码来源:Advanced2D.cpp
示例4: SearchHash
Status SearchHash(HashTable H, HKeyType K, int &p, int &c) {
// 算法9.17
// 在开放定址哈希表H中查找关键码为K的元素,
// 若查找成功,以p指示待查数据元素在表中位置,并返回SUCCESS;
// 否则,以p指示插入位置,并返回UNSUCCESS,
// c用以计冲突次数,其初值置零,供建表插入时参考
p = Hash(K); // 求得哈希地址
while ((H.elem[p].key != NULLKEY) && // 该位置中填有记录
!equal(K, (H.elem[p].key))) // 并且关键字不相等
collision(p, ++c); // 求得下一探查地址p
if (equal(K, (H.elem[p].key)))
return SUCCESS; // 查找成功,p返回待查数据元素位置
else return UNSUCCESS; // 查找不成功(H.elem[p].key == NULLKEY),
// p返回的是插入位置
} // SearchHash
开发者ID:durians,项目名称:durians,代码行数:15,代码来源:ALGO0917.CPP
示例5: move_shape
void move_shape(_shape_book *s_book)
{
int i, j;
for (i=0; i<s_book->t_blocade; i++) {
s_book->shape_ptr[i]->checked = false;
}
for (j=0; j<s_book->t_blocade; j++) {
collision(s_book, j);
for (i=0; i<4; i++) {
s_book->shape_ptr[j]->pt[i].y += s_book->shape_ptr[j]->vector.y;
s_book->shape_ptr[j]->pt[i].x += s_book->shape_ptr[j]->vector.x;
}
}
}
开发者ID:0pointr,项目名称:le-Snake-Mod,代码行数:15,代码来源:box_demo.c
示例6: new_apple
static void new_apple(void) {
if(length == LED_WIDTH * LED_HEIGHT) {
end = 1;
return;
}
for(;;) {
apple[0] = rand() % LED_WIDTH;
apple[1] = rand() % LED_HEIGHT;
if(!collision(apple[0], apple[1], 0)) {
break;
}
}
}
开发者ID:2bt,项目名称:PentaJoy,代码行数:15,代码来源:snake.c
示例7: QGraphicsPixmapItem
// Player
Player::Player(QGraphicsItem *parent): QGraphicsPixmapItem(parent)
{
// set pixmap image for player ship
// setRect(0,0,100,100);
setPixmap(QPixmap(":/player-sprites/player-ship.png"));
// set bullet sound
bulletsound = new QMediaPlayer();
bulletsound->setMedia(QUrl("qrc:/sounds/gun-shot.wav"));
// check for enemy collisions
QTimer * collisionTimer = new QTimer();
QObject:: connect(collisionTimer,SIGNAL(timeout()), this, SLOT(collision()));
collisionTimer->start(250);
}
开发者ID:cigreja,项目名称:MyFirstQtGame,代码行数:16,代码来源:Player.cpp
示例8: CreateFreeFallBall
static dNewtonDynamicBody* CreateFreeFallBall(dNewton* const world)
{
// crate a collision sphere instance, of radio 1.0 and a collision mask 1
dNewtonCollisionSphere collision (world, 1.0f, 1);
// create a dynamic body with a sphere shape, mass of 1.0 kg, located 50 units above the ground
dMatrix matrix (dGetIdentityMatrix());
matrix.m_posit.m_y = 50.0f;
dNewtonDynamicBody* const body = new MyDynamicBody (world, 1.0, &collision, NULL, matrix);
// set the linear damping to zero
body->SetLinearDrag (0.0f);
return body;
}
开发者ID:Hurleyworks,项目名称:newton-dynamics,代码行数:15,代码来源:main.cpp
示例9: supprimer
std::vector < Objet* > CollisionManager::spritecollide(Objet& obj,Group& groupe,bool supprimer) {
std::vector < Objet* > sprites_collisions;
std::vector < Objet* > objets_groupe = groupe.objets();
//Pour tous les objets du groupe on regarde s'ils sont en collision avec un objet
for(unsigned int i = 0;i < objets_groupe.size();i++) {
if(collision(objets_groupe[i] -> boundingBox(),obj.boundingBox())) {
//s'ils sont en collision, on ajoute l'objet du groupe au tableau
sprites_collisions.push_back(objets_groupe[i]);
if(supprimer)
//Si on doit supp
objets_groupe[i] -> supprimer();
}
}
return sprites_collisions;
}
开发者ID:SPPROD,项目名称:Moteur2D,代码行数:16,代码来源:CollisionManager.cpp
示例10: switch
int Level::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
case 0: collision((*reinterpret_cast< QVector3D(*)>(_a[1]))); break;
case 1: inclineChanged((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break;
case 2: update(); break;
default: ;
}
_id -= 3;
}
return _id;
}
开发者ID:d-theus,项目名称:maze3D,代码行数:16,代码来源:moc_glwidget.cpp
示例11: collided_points
void
collided_points(void)
{
int i;
for (i = 0; i < DYNAMIC_OBJECTS_NUMBER; i++) {
if (coins[i].visible) {
if (collision(compass[P].x, compass[P].y, &coins[i])) {
score++;
coins[i].visible = 0;
}
}
}
if(score == DYNAMIC_OBJECTS_NUMBER)
playing = 0;
}
开发者ID:chamun,项目名称:CGII,代码行数:16,代码来源:cgii.c
示例12: getSlot
size_t ContainerGrid::getSlot(const ScreenPoint &mousePos) const {
if (!collision(mousePos, ScreenRect{0, 0, width(), height()})) return NO_SLOT;
size_t x = static_cast<size_t>((mousePos.x) / (Client::ICON_SIZE + _gap + 2)),
y = static_cast<size_t>((mousePos.y - 1) /
(Client::ICON_SIZE + _gap + 2));
// Check inside gaps
if (mousePos.x - static_cast<px_t>(x) * (Client::ICON_SIZE + _gap + 2) >
Client::ICON_SIZE + 2)
return NO_SLOT;
if (mousePos.y - static_cast<px_t>(y) * (Client::ICON_SIZE + _gap + 2) >
Client::ICON_SIZE + 2)
return NO_SLOT;
size_t slot = y * _cols + x;
if (slot >= _linked.size()) return NO_SLOT;
return slot;
}
开发者ID:timgurto,项目名称:mmo,代码行数:16,代码来源:ContainerGrid.cpp
示例13: drop_cb
static void drop_cb(struct game_state *gs)
{
if (collision(gs, 0, 1)) {
int old = value(gs);
put_shape(gs, 1);
fix_grid(gs);
fprintf(gs->log, "%d %d\n", old, gs->lines);
printf("%d\n", value(gs) - old);
load_block(gs);
} else {
put_shape(gs, 0);
gs->y += 1;
put_shape(gs, 4);
}
}
开发者ID:gattschardo,项目名称:tetris,代码行数:16,代码来源:tetris.c
示例14: check_bullets
void game_state::check_bullets( void )
{
for( size_t b = bullets.size(); b > 0; --b )
{
for( size_t t = tanks.size(); t > 0; --t )
{
if( collision( *bullets[b-1], *tanks[t-1] ) )
{
spawn_explosion( bullets[ b - 1 ]->getPos() );
destroy_tank( t - 1 );
destroy_bullet( b - 1 );
break;
}
}
}
}
开发者ID:rsaxvc,项目名称:furry-octo-lana,代码行数:16,代码来源:game_state.cpp
示例15: main
int main(){
clock_t timelim;
init();
printw("Strawb catcher version 1\n");
printw("\t\tPress F1 or ESC to quit");
entity p;
p.x = 10;
p.y = 20;
p.display = '@';
p.score = 0;
p.colour = 2;
entity *playerptr = &p;
entity fr[10];
entity *fruitpointer = &fr;
int i;
definestats(fruitpointer);
timelim = clock();
int escape;
while(1 == 1){
int score = p.score;
int o = 0;
mvprintw(0,30,"Score : %d", score);
movep(playerptr);
draw(playerptr);
collision(fruitpointer, playerptr);
drawf(fruitpointer);
timelim = clock() - timelim;
escape = ((int)timelim)/CLOCKS_PER_SEC;
mvprintw(0, 60,"Seconds : %d", ((int)timelim)/CLOCKS_PER_SEC);
if(escape > 30){
int d = 0;
int displayscore = p.score;
clear();
mvprintw(10, 20, "Congratulations, you have scored %d points\n", displayscore);
refresh();
wait(10);
deinit();
}
}
}
开发者ID:Gigaraptor,项目名称:strawbs,代码行数:47,代码来源:main.c
示例16: SearchHash
Status SearchHash(HashTable H,KeyType K,int *p,int *c)
{ /* 在开放定址哈希表H中查找关键码为K的元素,若查找成功,以p指示待查数据 */
/* 元素在表中位置,并返回SUCCESS;否则,以p指示插入位置,并返回UNSUCCESS */
/* c用以计冲突次数,其初值置零,供建表插入时参考。算法9.17 */
*p=Hash(K); /* 求得哈希地址 */
while(H.elem[*p].key!=NULL_KEY&&!EQ(K,H.elem[*p].key))
{ /* 该位置中填有记录.并且关键字不相等 */
(*c)++;
if(*c<m)
collision(p,*c); /* 求得下一探查地址p */
else
break;
}
if EQ(K,H.elem[*p].key)
return SUCCESS; /* 查找成功,p返回待查数据元素位置 */
else
return UNSUCCESS; /* 查找不成功(H.elem[p].key==NULL_KEY),p返回的是插入位置 */
开发者ID:jiayuehua,项目名称:datastructure_gao,代码行数:17,代码来源:Bo9-7.c
示例17: SearchHash
Status SearchHash(HashTable H, KeyType K, int &p, int &c)
{/* 在开放定址哈希表H中查找关键码为K的元素,若查找成功,以p指示待查数据 */
/* 元素在表中位置,并返回SUCCESS;否则,以p指示插入位置,并返回UNSUCCESS */
/* c用以计冲突次数,其初值置零,供建表插入时参考。算法9.17 */
p = Hash(K); /* 求得哈希地址 */
while (H.elem[p].key != NULLKEY && !EQ(K, H.elem[p].key))
{ /* 该位置中填有记录.并且关键字不相等 */
c++;
if (c < length)
collision(p, c); /* 求得下一探查地址p */
else
break;
}
if EQ(K,H.elem[p].key)
return SUCCESS; /* 查找成功,p返回待查数据元素位置 */
else
return UNSUCCESS; /* 查找不成功(H.elem[p].key==NULLKEY),p返回的是插入位置 */
开发者ID:ericsahit,项目名称:myproject,代码行数:17,代码来源:HashTable.cpp
示例18: collision
bool collision(const CircleHitBox &circleBox, const RoadBox &roadBox, LineHitBox &lineBox)
{
bool collided = false;
const std::vector<collision::LineHitBox> &hitBox = roadBox.getLineArray();
for(unsigned int i = 0; i < hitBox.size() && !collided; i++)
{
collided = collision(circleBox, hitBox[i]);
if(collided)
{
//std::cout<< "collision\n";
lineBox = hitBox[i]; //save which line made the collision
}
}
return collided;
}
开发者ID:elshobokshy,项目名称:ProjectCarRacing,代码行数:17,代码来源:collision.cpp
示例19: jump
void jump(char **tela, int score_global) { //Função que cuida da movimentação do "tijolo" para cima.
int i, j;
for(i = 0; i < LINHAS; i++)
for(j = 0; j < COLUNAS; j++) {
if(tela[i][j] == 'X') {
if(tela[i - 1][j] == '#') {
gameover(tela, score_global);
}
else {
tela[i - 1][j] = 'X';
tela[i][j] = '.';
}
}
}
collision(tela, score_global);
}
开发者ID:angeloperpa,项目名称:flappybrick,代码行数:17,代码来源:bib_game.c
示例20: moverAdelante
//hacia la camara es positivo
//hacia la camara es positivo
void moverAdelante(){
interaccionCuadros();
Objeto *aux=escena->objetos["protagonista"];
if(!checarSubirBajar()){
if(!collision(aux->rotY-180)){
double rotYRad= degToRad(aux->rotY-180);
aux->posZ-= dtran*5 * (cos(rotYRad));
aux->posX-= dtran*5 * (sin(rotYRad));
camaraPrimeraPersona->xview=aux->posX+sin(degToRad(aux->rotY-180));
camaraPrimeraPersona->zview=aux->posZ+cos(degToRad(aux->rotY-180));
redimensiona(currWidth,currHeight);
}
}else{
redimensiona(currWidth,currHeight);
}
}
开发者ID:andreacorrea,项目名称:museoDisney,代码行数:19,代码来源:Movimientos.cpp
注:本文中的collision函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论