1.小球移动
#include <iostream> #include "canvas.h" #include "Ball.h" int main() { Canvas canvas; Ball ball1(10,10); system("pause"); ball1.left(5); system("pause"); ball1.up(20); system("pause"); canvas.changeCanvasFg("E"); // 更新画布前景色 system("pause"); canvas.changeCanvasBg("D"); // 更新画布背景色 system("pause"); return 0; }
#ifndef CANVAS_H #define CANVAS #include <string> using std::string; class Canvas { public: Canvas(string bg0="0", string fg0="A"); void changeCanvasBg(string bg0); void changeCanvasFg(string fg0); void changeCanvasColor(string bg0, string fg0); private: string bg; // background color string fg; // foreground color }; #endif
#include "canvas.h" #include <cstdlib> Canvas::Canvas(string bg0, string fg0):bg(bg0), fg(fg0) { string color = "color "; color += bg0; color += fg0; system(color.c_str()); } void Canvas::changeCanvasBg(string bg0) { bg = bg0; // 更新画布背景色 string color = "color "; color += bg; color += fg; system(color.c_str()); } void Canvas::changeCanvasFg(string fg0) { fg = fg0; // 更新画布前景色 string color = "color "; color += bg; color += fg; system(color.c_str()); } void Canvas::changeCanvasColor(string bg0, string fg0){ bg = bg0; // 更新画布背景色 fg = fg0; // 更新画布前景色 string color = "color "; color += bg; color += fg; system(color.c_str()); }
#ifndef BALL_H #define BALL_H class Ball { public: Ball(int x0=0, int y0=0); // 在坐标(x,y)处构造一个小球(小球用字符O表示) void left(int step=1); // 左移step void right(int step=1); // 右移step void up(int step=1); // 上移step void down(int step=1); // 下移step private: int x; // x坐标 int y; // y坐标 }; #endif
#include "ball.h" #include <iostream> #include <cstdlib> // 因为使用了system("cls"); 所以需要包含这个头文件 using std::cout; using std::endl; const int SIZE_X=50; // 小球x轴移动范围0~SIZE_X const int SIZE_Y=50; // 小球y轴移动范围0~SIZE_Y Ball::Ball(int x0, int y0):x(x0), y(y0) { // 打印y0-1行空行 for(int line=1; line <= y0-1; line++) cout << endl; // 打印x0-1个空格 for(int col=1; col <= x0-1; col++) cout << " "; // 打印小球 cout << "O" << endl; } void Ball::left(int step) { x = x-step; if(x <= 0) x=0; // 清屏 system("cls"); // 打印y-1行空行 for(int line=1; line <= y-1; line++) cout << endl; // 打印x-1个空格 for(int col=1; col <= x-1; col++) cout << " "; // 打印小球 cout << "O" << endl; } void Ball::right(int step) { x = x+step; if(x >= SIZE_X) x=SIZE_X; // 清屏 system("cls"); // 打印y-1行空行 for(int line=1; line <= y-1; line++) cout << endl; // 打印x-1个空格 for(int col=1; col <= x-1; col++) cout << " "; // 打印小球 cout << "O" << endl; } void Ball::up(int step) { y = y-step; if(y <= 0) y=0; // 清屏 system("cls"); // 打印y-1行空行 for(int line=1; line <= y-1; line++) cout << endl; // 打印x-1个空格 for(int col=1; col <= x-1; col++) cout << " "; // 打印小球 cout << "O" << endl; } void Ball::down(int step) { y = y+step; if(y >= SIZE_Y) y = SIZE_Y; // 清屏 system("cls"); // 打印y-1行空行 for(int line=1; line <= y-1; line++) cout << endl; // 打印x-1个空格 for(int col=1; col <= x-1; col++) cout << " "; // 打印小球 cout << "O" << endl; }
2.定义Graph类对象,调用绘图接口绘制图形
#include <iostream> #include "graph.h" using namespace std; int main() { Graph graph1('*',5); graph1.draw(); system("pause"); system("cls"); Graph graph2('$',7); graph2.draw(); system("pause"); return 0; }
#ifndef GRAPH_H #define GRAPH_H class Graph { public: Graph(char ch, int n); void draw(); private: char symbol; int size; }; #endif
#include "graph.h" #include <iostream> using namespace std; // 带参数的构造函数的实现 Graph::Graph(char ch, int n): symbol(ch), size(n) { } // 成员函数draw()的实现 // 功能:绘制size行,显示字符为symbol的指定图形样式 void Graph::draw() { // 补足代码 int i,j,k; for(i=0;i<size;i++) {for(j=0;j<size-1-i;j++) cout<<" "; for(k=0;k<2*i+1;k++) cout<<symbol; cout<<endl; } }
3.设计一个分数类Fraction描述分数(两个整数的比值)
#include"fraction.h" #include<iostream> using namespace std; int main() { Fraction a; a.show(); Fraction b(3, 4); b.show(); Fraction c(5); c.show(); int x, y; cin >> x >> y; Fraction d(x, y); d.show(); a.fractionadd(b, d); a.fractionmin(b, d); a.fractionmul(b, d); a.fractiondiv(b, d); a.fractioncom(b, d); system("pause"); }
#ifndef FRACTION_H #define FRACTION_H class Fraction { public: Fraction(int t = 0, int b = 1) : top(t), bottom(b) { } Fraction(const Fraction &fr) : top(fr.top), bottom(fr.bottom) { } void fractionadd(Fraction &f, Fraction &p); void fractionmin(Fraction &f, Fraction &p); void fractionmul(Fraction &f, Fraction &p); void fractiondiv(Fraction &f, Fraction &p); void fractioncom(Fraction &f, Fraction &p); void show(); private: int top; int bottom; }; #endif // !FRACTION_H
#include"fraction.h" #include<iostream> using namespace std; void Fraction::show() { if (top == 0) cout << 0 << endl; else if (bottom == 1) cout << top << endl; else if (top / bottom < 0) cout << "-" << top << "/" << bottom << endl; else cout << top << "/" << bottom << endl; } void Fraction::fractionadd(Fraction &f, Fraction &p) { int t1, b1, t2, b2, m, n, temp, x, y, z; t1 = f.top; t2 = p.top; b1 = f.bottom; b2 = p.bottom; y = b1 * b2; x = t1 * b2 + t2 * b1; m = x; n = y; if (m < n) { temp = m; m = n; n = temp; } for (z = n;z >= 1;z--) { if (x%z == 0 && y%z == 0) break; } x = x / z; y = y / z; cout << x << "/" << y << endl; } void Fraction::fractionmin(Fraction &f, Fraction &p) { int t1, t2, b1, b2, x, y, m, n, temp, z; t1 = f.top; t2 = p.top; b1 = f.bottom; b2 = p.bottom; y = b1 * b2; x = t1 * b2 - t2 * b1; m = x; n = y; if (m < n) { temp = m; m = n; n = temp; } for (z = n; z >= 1; z--) { if (x%z == 0 && y%z == 0) break; } x = x / z; y = y / z; cout << x << "/" << y << endl; } void Fraction::fractionmul(Fraction &f, Fraction &p) { int t1, t2, b1, b2, x, y, m, n, temp, z; t1 = f.top; t2 = p.top; b1 = f.bottom; b2 = p.bottom; y = b1 * b2; x = t1 * t2; m = x; n = y; if (m < n) { temp = m; m = n; n = temp; } for (z = n; z >= 1; z--) { if (x%z == 0 && y%z == 0) break; } x = x / z; y = y / z; cout << x << "/" << y << endl; } void Fraction::fractiondiv(Fraction &f, Fraction &p) { int t1, t2, b1, b2, x, y, m, n, temp, z; t1 = f.top; t2 = p.bottom; b1 = f.bottom; b2 = p.top; y = b1 * b2; x = t1 * t2; m = x; n = y; if (m < n) { temp = m; m = n; n = temp; } for (z = n; z >= 1; z --) { if (x%z == 0 && y%z == 0) break; } x = x / z; y = y / z; cout << x << "/" << y << endl; } void Fraction::fractioncom(Fraction &f, Fraction &p) { int t1, t2, b1, b2, x, y; t1 = f.top; t2 = p.top; b1 = f.bottom; b2 = p.bottom; y = b1 * b2; x = t1 * b2 - t2 * b1; if (x < 0) cout << f.top << "/" << f.bottom << "<" << p.top << "/" << p.bottom << endl; else if (x > 0) cout << f.top << "/" << f.bottom << ">" << p.top << "/" << p.bottom << endl; else if (x == 0) cout << f.top << "/" << f.bottom << "=" << p.top << "/" << p.bottom << endl; }
实验总结:截图的动画是请教同学才做出来的;最后一题是在理解上才慢慢做的,有不懂的还是请教了同学,若是有问题,请各位指出。