这两个游戏可以设置函数封装也可以不设置函数封装。
以下给出的是不设置函数封装的两种答案,可以用来练习逻辑思维。
而且注意做游戏方法。
在非模块函数中(也就是都在main函数中),需要去踩一个一个思考点来让程序达到规则。也就是我们可以把一个完整的游戏分成许多个小部分,一点一点去完成这些小任务,最终将小阶段的成果组合,就构成了最终繁琐的n行代码。
这种思维也是模块化的构成游戏的雏形。
弹跳的小球
- 题目要求:使一小球抛出,若小球碰到四面边界则弹回,符合物理设定。
- 要注意三个点:
1.建立小球的坐标。
2.如何判断小球碰到边界。
3.小球如何改变坐标去移动
- 参考代码
#include <stdio.h>
#include<stdlib.h>
#include<Windows.h>
int main() {
int x = 0, y = 5;
int i, j;//i,j用来计量达到x,y坐标所需要的“ ”和“\n”
int top = 0, bottom = 9;
int left = 0, right = 6;
int velocity_x = 1, velocity_y = 1;
while (1) {
x = x + velocity_x;
y = y + velocity_y;//改变x,y的坐标
Sleep(100);
system("cls");
for (i = 0; i < x; i++) {
printf("\n");
}
for (j = 0; j < y; j++)
printf(" ");
printf("o\n");//输出小球
if ((x == top)||(x==bottom)) {
velocity_x = -velocity_x;
}
if ((x == left)||(x==right)) {
velocity_y = -velocity_y;
}
}
return 0;
}
简单的飞机游戏
- 题目:作出一个固定的靶子,让可以发射激光的飞机射中并且使靶子消失。
- 思考点:
1.建立x,y坐标来确定飞机形状和位置。
2.如何让飞机移动。
3.如何让激光跟随飞机,且确定激光打开关闭状态。
4.如何判断激光集中靶子。
- 参考编程
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <Windows.h>
int main() {
int i, j;
int x = 10, y = 5;
int isfire = 0;
int iskill = 0;
int ny = 5;
char input;
while (1) {
system("cls");//请屏必须使用的函数;
if (!iskill) {
for (j = 0; j < ny; j++) {
printf(" ");
}printf("+\n");
}
if (isfire == 0) {
for (i = 0; i < x; i++) {
printf("\n");
}
}
else
{
for (i = 0; i < x; i++) {
for (j = 0; j < y+2; j++) {
printf(" ");
}
printf("|\n");
}
}
if (y + 2 == ny) {
iskill = 1;
}
isfire = 0;
//绘制飞机图案
for (j = 0; j < y; j++) {
printf(" ");
}
printf(" *\n");
for (j = 0; j < y; j++) {
printf(" ");
}
printf("*****\n");
for (j = 0; j < y; j++) {
printf(" ");
}
printf(" * * ");
if (_kbhit()) {
input = _getch();//控制指令方向,免去输入回车
if (input == 'w')x--;
if (input == 'a')y--;
if (input == 's')x++;
if (input == 'd')y++;
isfire = 1;
}
}
return 0;
}