c语言小游戏——弹跳的小球和简单的飞机游戏

这两个游戏可以设置函数封装也可以不设置函数封装。

以下给出的是不设置函数封装的两种答案,可以用来练习逻辑思维

而且注意做游戏方法。

在非模块函数中(也就是都在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;
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值