⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wcgcube.cpp

📁 一个很不错的小游戏的源码
💻 CPP
字号:
/***************************************************************************                          wcgcube.cpp  -  description                             -------------------    begin                : Sat Nov 3 2001    copyright            : (C) 2001 by wguzgg    email                : wguzgg@263.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************/#include <iostream.h>#include "wcgcube.h"WcgCube::WcgCube(){	direct[0]=Z;	direct[1]=X;	direct[2]=-Z;	direct[3]=-X;	direct[4]=Y;	direct[5]=-Y;		sideColor[0][0]=1.0f;	sideColor[0][1]=1.0f;	sideColor[0][2]=1.0f;		sideColor[1][0]=1.0f;	sideColor[1][1]=1.0f;	sideColor[1][2]=0.0f;		sideColor[2][0]=1.0f;	sideColor[2][1]=0.0f;	sideColor[2][2]=0.0f;		sideColor[3][0]=1.0f;	sideColor[3][1]=0.0f;	sideColor[3][2]=1.0f;		sideColor[4][0]=0.0f;	sideColor[4][1]=1.0f;	sideColor[4][2]=1.0f;		sideColor[5][0]=0.0f;	sideColor[5][1]=1.0f;	sideColor[5][2]=0.0f;}WcgCube::~WcgCube(){}void WcgCube::draw(GLfloat orientX,GLfloat orientY,GLfloat orientZ) {	GLfloat cubeRadium=10.0f;	GLfloat cubeSpace=2.0f;	for (int i=0;i<6;i++) {		glColor3f(sideColor[i][0],sideColor[i][1],sideColor[i][2]);		if (direct[i]==Z) {			// Front face			glBegin(GL_POLYGON);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);			glEnd();		}		else		if (direct[i]==-Z) {			// Back Face			glBegin(GL_POLYGON);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);			glEnd();		}		else		if (direct[i]==Y) {			// Top Face			glBegin(GL_POLYGON);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);			glEnd();		}		else		if (direct[i]==-Y) {			// Bottom Face			glBegin(GL_POLYGON);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);			glEnd();		}		else		if (direct[i]==X) {			// Left face			glBegin(GL_POLYGON);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX+cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX+cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);			glEnd();		}		else		if (direct[i]==-X) {			// Right face			glBegin(GL_POLYGON);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ+cubeRadium);				glVertex3f(orientX-cubeRadium,orientY+cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ-cubeRadium);				glVertex3f(orientX-cubeRadium,orientY-cubeRadium,orientZ+cubeRadium);			glEnd();		}	}}void WcgCube::output() {	for (int i=0;i<6;i++) {		cout << "direct[" << i << "]=" << direct[i] << endl;	}}void WcgCube::output(int sign) {	for (int i=0;i<6;i++) {		if (direct[i]==sign)			cout <<  i;	}}void WcgCube::turnByXShun(int x) {	turnByX(x,-1);}void WcgCube::turnByXNi(int x) {	turnByX(x,1);}void WcgCube::turnByX(int x,int sign) {	for (int i=0;i<6;i++) {		switch (direct[i]) {			case Z:				direct[i]=(-1)*sign*Y;				break;			case -Z:				direct[i]=sign*Y;				break;			case Y:				direct[i]=sign*Z;				break;			case -Y:				direct[i]=(-1)*sign*Z;				break;		}	}}void WcgCube::turnByYShun(int y) {	turnByY(y,-1);}void WcgCube::turnByYNi(int y) {	turnByY(y,1);}void WcgCube::turnByY(int y,int sign) {	for (int i=0;i<6;i++) {		switch (direct[i]) {			case Z:				direct[i]=sign*X;				break;			case -Z:				direct[i]=(-1)*sign*X;				break;			case X:				direct[i]=(-1)*sign*Z;				break;			case -X:				direct[i]=sign*Z;				break;		}	}}void WcgCube::turnByZShun(int z) {	turnByZ(z,-1);}void WcgCube::turnByZNi(int z) {	turnByZ(z,1);}void WcgCube::turnByZ(int z,int sign) {	for (int i=0;i<6;i++) {		switch (direct[i]) {			case Y:				direct[i]=(-1)*sign*X;				break;			case -Y:				direct[i]=sign*X;				break;			case X:				direct[i]=sign*Y;				break;			case -X:				direct[i]=(-1)*sign*Y;				break;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -