private void ResetGrid() { for (int i = 0; i < max; i++) { for (int j = 0; j < max; j++) { if (grid[i, j] != -1) { grid[i, j] = -1; canvas1.Children.Remove(images[i, j]); images[i, j] = null; } } } }
时间: 2024-02-10 16:19:15 浏览: 15
这段代码是用来重置一个 max * max 大小的网格,在重置之前,遍历整个网格,将其中的每个格子的值设为 -1,同时将格子对应的图片从画布中移除,最后将图片的引用设为 null。
具体实现是通过两个嵌套的 for 循环遍历整个网格,如果当前格子的值不为 -1,则将其值设为 -1,并从画布中移除对应的图片。最后将图片的引用设为 null,以便下一次重新加载图片。
这个方法的作用可能是在游戏中需要重置网格布局,例如当用户重新开始游戏或者切换到不同的游戏场景时。
相关问题
#include<iostream>using namespace std;class Array2D{ private: int rows; double a[rows][8]; public: Array2D(int rows_); ~Array2D(); int getRows(); int getColumns(); void setElem(int x, int y, double z); double getMaxOfRow(int b); double getMinOfRow(int c); double getAvgOfRow(int d); double getMaxOfArray(); double getMinOfArray(); double getAvgOfArray();};Array2D::Array2D(int rows_):rows(rows_){}Array2D::~Array2D(){ cout<<"释放了一个"<<rows<<"行8列的数组"<<endl;}int Array2D::getRows(){ return rows;}int Array2D::getColumns(){ return 8;}void Array2D::setElem(int x, int y, double z){ a[x][y]=z;}double Array2D::getMaxOfRow(int b){ double max; int i=0; max=a[b][i]; for(i=1;i<8;i++){ if(max<a[b][i]) { max=a[b][i]; } } return max;}double Array2D::getMinOfRow(int c){ double min; int i=0; min=a[c][i]; for(i=1;i<8;i++){ if(min>a[c][i]) { min=a[c][i]; } } return min;}double Array2D::getAvgOfRow(int d){ double sum_sum=0.0,SUM=0.0; int i; for(i=0;i<8;i++){ SUM+=a[d][i]; } sum_sum=SUM/8.0; return sum_sum;}double Array2D::getMaxOfArray(){ double max; int i,j; max=a[0][0]; for(i=0;i<rows;i++){ for(j=1;j<8;j++){ if(max<a[i][j]) max=a[i][j]; } } return max;}double Array2D::getMinOfArray(){ double min; int i,j; min=a[0][0]; for(i=0;i<rows;i++){ for(j=1;j<8;j++){ if(min>a[i][j]) min=a[i][j]; } } return min;}double Array2D::getAvgOfArray(){ double sum=0.0,summary=0.0; int i,j; for(i=0;i<rows;i++){ for(j=0;j<8;j++){ summary+=a[i][j]; } } sum=summary/(8.0*rows); return sum;}int main(){ int r; double n; cin>>r; Array2D arr(r); int i,j; for(i=0;i<r;i++) for(j=0;j<8;j++){ cin>>n; arr.setElem(i,j,n); } cout<<arr.getRows()<<" "<<arr.getColumns()<<endl; cout<<arr.getMaxOfRow(0)<<" "<<arr.getMinOfRow(0)<<" "<<arr.getAvgOfRow(0)<<endl; cout<<arr.getMaxOfRow(r-1)<<" "<<arr.getMinOfRow(r-1)<<" "<<arr.getAvgOfRow(r-1)<<endl; cout<<arr.getMaxOfArray()<<" "<<arr.getMinOfArray()<<" "<<arr.getAvgOfArray()<<endl; return 0;}帮我更正一下这段代码的错误。
在类 Array2D 中的成员变量 a 的定义中,使用了 rows 变量,但是 rows 是在类的构造函数中传入的参数,所以在成员变量的定义中无法使用。可以将 a 定义为一个指针,在构造函数中动态分配内存。
正确代码如下:
```
#include<iostream>
using namespace std;
class Array2D{
private:
int rows;
double **a;
public:
Array2D(int rows_);
~Array2D();
int getRows();
int getColumns();
void setElem(int x, int y, double z);
double getMaxOfRow(int b);
double getMinOfRow(int c);
double getAvgOfRow(int d);
double getMaxOfArray();
double getMinOfArray();
double getAvgOfArray();
};
Array2D::Array2D(int rows_):rows(rows_){
a = new double*[rows];
for(int i = 0; i < rows; i++){
a[i] = new double[8];
}
}
Array2D::~Array2D(){
for(int i = 0; i < rows; i++){
delete[] a[i];
}
delete[] a;
cout<<"释放了一个"<<rows<<"行8列的数组"<<endl;
}
int Array2D::getRows(){
return rows;
}
int Array2D::getColumns(){
return 8;
}
void Array2D::setElem(int x, int y, double z){
a[x][y] = z;
}
double Array2D::getMaxOfRow(int b){
double max;
int i = 0;
max = a[b][i];
for(i = 1; i < 8; i++){
if(max < a[b][i]){
max = a[b][i];
}
}
return max;
}
double Array2D::getMinOfRow(int c){
double min;
int i = 0;
min = a[c][i];
for(i = 1; i < 8; i++){
if(min > a[c][i]){
min = a[c][i];
}
}
return min;
}
double Array2D::getAvgOfRow(int d){
double sum_sum = 0.0, SUM = 0.0;
int i;
for(i = 0; i < 8; i++){
SUM += a[d][i];
}
sum_sum = SUM / 8.0;
return sum_sum;
}
double Array2D::getMaxOfArray(){
double max;
int i, j;
max = a[0][0];
for(i = 0; i < rows; i++){
for(j = 1; j < 8; j++){
if(max < a[i][j])
max = a[i][j];
}
}
return max;
}
double Array2D::getMinOfArray(){
double min;
int i, j;
min = a[0][0];
for(i = 0; i < rows; i++){
for(j = 1; j < 8; j++){
if(min > a[i][j])
min = a[i][j];
}
}
return min;
}
double Array2D::getAvgOfArray(){
double sum = 0.0, summary = 0.0;
int i, j;
for(i = 0; i < rows; i++){
for(j = 0; j < 8; j++){
summary += a[i][j];
}
}
sum = summary / (8.0 * rows);
return sum;
}
int main(){
int r;
double n;
cin>>r;
Array2D arr(r);
int i, j;
for(i = 0; i < r; i++){
for(j = 0; j < 8; j++){
cin>>n;
arr.setElem(i, j, n);
}
}
cout<<arr.getRows()<<" "<<arr.getColumns()<<endl;
cout<<arr.getMaxOfRow(0)<<" "<<arr.getMinOfRow(0)<<" "<<arr.getAvgOfRow(0)<<endl;
cout<<arr.getMaxOfRow(r - 1)<<" "<<arr.getMinOfRow(r - 1)<<" "<<arr.getAvgOfRow(r - 1)<<endl;
cout<<arr.getMaxOfArray()<<" "<<arr.getMinOfArray()<<" "<<arr.getAvgOfArray()<<endl;
return 0;
}
```
#include<iostream> #include<string> using namespace std; class Student { private: int sno; string name; int grade; public: Student (int s,string n,int g) { sno = s; name = n; grade = g; } friend void display(Student*p); }; void display(Student *p) { int i; for(i = 0;i <= 4;i++) cout <<(*(p+i)).sno<<""<<(*(p+i)).name<<""<<(*(p+i)).grade<<endl; int max,min; max = min =(*p).grade; for(i=1;i<=4;i++) { if((*(p+i)).grade>max) max = (*(p+1)).grade; } for(i=0;i<=4;i++) { if((*(p+i)).grade==max) cout<<"最高分的姓名为:"<<(*(p+i)).name<<endl; } for(i=1;i<=4;i++) { if((*(p+i).grade<min) min=(*(p+i)).grade; } for(i=0;i<=4;i++) { if((*(p+i)).grade==min) cout<<"最低分的姓名为:"<<(*(p+1)).name<<endl; } } int main() { Student s[5]={Student(001,"何小鹏",100),Student(002,"严炜斌",80),Student(003,"欧君成",70),Student(004,"向恺乐",90),Student(005,"陶顺",85)} display(s); return 0; }找出代码错误
代码错误如下:
1. 在display函数的第一个for循环中,循环条件应该是i<5,而不是i<=4,否则只会输出前四个学生信息。
2. 在display函数中,第一个for循环和第二个for循环之间应该有一个空行,以提高代码的可读性。
3. 在display函数中,第一个for循环中输出学生信息的语句中,应该在每个数据之间加上一个空格。
4. 在display函数中,第二个for循环中判断最高分的语句中,应该是max = (*(p+i)).grade,而不是max = (*(p+1)).grade,否则会出现计算错误。
5. 在display函数中,第四个for循环中判断最低分的语句中,少了一个右括号,应该是(*(p+i)).grade<min)。
修改后的代码如下:
```
#include<iostream>
#include<string>
using namespace std;
class Student {
private:
int sno;
string name;
int grade;
public:
Student(int s, string n, int g) {
sno = s;
name = n;
grade = g;
}
friend void display(Student*p);
};
void display(Student *p) {
int i;
for(i = 0; i < 5; i++) {
cout << (*(p+i)).sno << " " << (*(p+i)).name << " " << (*(p+i)).grade << endl;
}
cout << endl;
int max, min;
max = min = (*p).grade;
for(i = 1; i < 5; i++) {
if((*(p+i)).grade > max)
max = (*(p+i)).grade;
}
for(i = 0; i < 5; i++) {
if((*(p+i)).grade == max)
cout << "最高分的姓名为:" << (*(p+i)).name << endl;
}
for(i = 1; i < 5; i++) {
if((*(p+i)).grade < min)
min = (*(p+i)).grade;
}
for(i = 0; i < 5; i++) {
if((*(p+i)).grade == min)
cout << "最低分的姓名为:" << (*(p+i)).name << endl;
}
}
int main() {
Student s[5] = {
Student(001,"何小鹏",100),
Student(002,"严炜斌",80),
Student(003,"欧君成",70),
Student(004,"向恺乐",90),
Student(005,"陶顺",85)
};
display(s);
return 0;
}
```