C语言程序设计第一节课作业
1 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。
通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。
2
#include<stdio.h>
void main()
{
printf("helloworld");
getch();
}
3本实验实现了游戏画面绘制贴图、游戏输入消息处理、游戏动画技巧、游戏物理现象设计原理。优点:初步实现了游戏画面绘制贴图、游戏输入消息处理、游戏动画技巧、游戏物理现象设计基本功能。缺点:因时间及数据结构算法没有学好所以未实现×××与石头碰撞效果,爆炸效果不逼真,贴图效果不好。这个程序的架构仍显笨拙,有很多不如意的地方,但是实现了游戏画面绘制贴图、游戏输入消息处理、游戏动画技巧、游戏物理现象设计原理。虽然整个游戏不能像红白机一样内容丰富,但是以后会把它设计得简洁、优雅,以至于可以把它做成一个像《雷电》一样精彩的飞行射击游戏。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 35
void print(int [][N]);//输出函数
void movebul(int [][N]);//×××移动函数
void movepla(int [][N]);//敌机移动函数
void setting(void);//设置函数
void menu(void);//菜单函数
int scr[22][N]={0},pl=9,width=24,speed=3,density=30,score=0,death=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡
main(void)
{
menu();
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1)
{
if(kbhit())
switch(getch())//控制左右移动和进入菜单
{
case 'a':case 'A':
if(pl>0)
scr[21][pl]=0,scr[21][--pl]=1;
break;
case 'd':case 'D':
if(pl<width-2)
scr[21][pl]=0,scr[21][++pl]=1;
break;
case 'w':case 'W':
scr[20][pl]=2;
break;
case 27 :
setting();
break;
}
if(++j%density==0)//控制生产敌机的速度
{
j=0;srand(time(NULL));
scr[0][rand()%width]=3;
}
if(++i%speed==0)//控制敌机移动速度,相对于×××移动速度
movepla(scr);
movebul(scr);
print(scr);
if(i==30000)
i=0;//以免i 越界
}
}
void print(int a[][N])
{
system("cls");
int i,j;
for(i=0;i<22;i++)
{
a[i][width-1]=4;
for(j=0;j<width;j++)
{
if(a[i][j]==0)
printf(" ");
if(a[i][j]==1)
printf("\5");//输出我机的符号
if(a[i][j]==2)
printf(".");//×××
if(a[i][j]==3)
printf("\3"); //输出敌机符号
if(a[i][j]==4)
printf("|");
if(i==0&&j==width-1)
printf("得分:%d",score);//右上角显示得分
if(i==1&&j==width-1)
printf("死亡:%d",death);
if(i==2&&j==width-1)
printf("设置:Esc");
if(i==3&&j==width-1)
printf("Copyright:王攀");
}
printf("\n");
}
}
void movebul(int a[][N])
{
int i,j;
for(i=0;i<22;i++)
for(j=0;j<width;j++)
{
if(i==0&&a[i][j]==2)
a[i][j]=0;
if(a[i][j]==2)
{
if(a[i-1][j]==3)
score+=10,printf("\7");
a[i][j]=0,a[i-1][j]=2;
}
}
}
void movepla(int a[][N])
{
int i,j;
for(i=21;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。
for(j=0;j<width;j++)
{
if(i==21&&a[i][j]==3)
a[i][j]=0;//底行赋值0 以免越界。
if(a[i][j]==3)
a[i][j]=0,a[i+1][j]=3;
}
if(a[20][pl]==3&&a[21][pl]==1)
death++;
}
void setting(void)
{
int sw=0,i,j;
system("cls");
do{sw=0;printf("\n 游戏界面的大小:1.大2.小>> ");
switch(getche())
{
case '1':
width=34;
break;
case '2':
width=24;
break;
default:
printf("\n 错误,请重新选择...\n");
sw=1;
}
}
while(sw);
do
{
sw=0;
printf("\n 请选择敌机密度:1.大2.中3.小>> ");
switch(getche())
{
case '0':
density=10;
break;
case '1':
density=20;
break;
case '2':
density=30;
break;
case '3':
density=40;
break;
default:
printf("\n 错误,请重新选择...\n");
sw=1;
}
}while(sw);
do
{
sw=0;
printf("\n 敌机的飞行速度:1.快2.中3.慢>> ");
switch(getche())
{
case '1':
speed=2;
break;
case '2':
speed=3;
break;
case '3':
speed=4;
break;
default:
printf("\n 错误,请重新选择...\n");
sw=1;
}
}while(sw);
for(i=0;i<22;i++)
for(j=0;j<45;j++)
scr[i][j]=0;
scr[21][pl=9]=1;
printf("\n 按任意键保存...");
getch();
}
void menu(void)
{
printf("说明:按A D 控制我机左右飞行,W 发射×××\n 设置:请按Esc\n 开始游戏:任意键\n by yan_xu");
if(getch()==27)
setting();
}
转载于:https://blog.51cto.com/11639667/1789599
C语言程序设计第一节课作业相关推荐
- 电子科大《python语言程序设计》结课作业
作业内容与源代码 作业内容: 源代码: import csv from tkinter import messagebox import numpy as np from tkinter import ...
- C语言程序设计第三节课作业
1 指针是一个存储计算机内存地址的变量.从指针指向的内存读取数据称作指针的取值.指针可以指向某些具体类型的变量地址,例如int.long和double.指针也可以是void类型.NULL指针和未初始化 ...
- 电大本科c及语言设计形考答案,2020国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案(15页)-原创力文档...
国家开放大学电大<C语言程序设计>网络课形考任务4作业及答案 档任务4 一.选择题(共30分,每小题2分) 题目1 TOC \o "1-5" \h \z 假定有&quo ...
- 2014年秋广州华师在线计算机的作业答案,18秋华师《C语言程序设计B》在线作业-4辅导资料...
18秋华师<C语言程序设计B>在线作业-4辅导资料 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 2.90 积分 18秋华师<C语 ...
- c程序设计语言选修难吗,欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题...
置顶 欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题 叶卡林娜 发表于2017年01月05日 首先欢迎大家选修浙大翁恺老师的C语言程序设计课程.开课2天就看到讨论区已经有这么多帖子,说明 ...
- 数据结构第一节课感受
在第一节课中,老师让同学朗读重点自然段并让同学提出问题进行解答,在过程中我们能够很好的集中精神吸收知识也了解到了很多老师的学习方法,为数据结构的学习打下很好的基础. 在阅读完绪论之后,我对知识点做了以 ...
- 第一节计算机课开场白,第一节课有趣的开场白
我是一名新老师,请问第一堂课的开场白怎么讲 我:上课 学生:起立 我:同学们好 学生:老师好 我:请坐 我:很高兴见到大家. 我是你们的英语(或其他的学科)老师 我叫* 老师有一个小小的请求. 大家一 ...
- 学习git的第一节课
第一节课的笔记 git init 创建版本库 git status 查看版本状态 git log 可以看提交次数和时间 git log --pretty=oneline 按行显示 g ...
- 第一节课的Python基础知识
第一节课的Python基础知识 Python内置的数据类型 1.number 2.string 3.list 4.tuple 5.dict 6.set 其他小结 方法range()的使用 获取一个li ...
最新文章
- 比特币如何实现—《区块链历史链条》2
- Spring Boot 启动时,让方法自动执行的 4 种方法!
- 昨晚,周杰伦新歌《说好不哭》一夜赚了1000万!
- Hadoop pipes编程
- python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
- c语言函数求pi的近似值,C语言 用π/4=1-1/3+1/5-1/7+... 求π的近似值
- 使用ViewContainerRef探索Angular DOM操作技术
- vue数组修改不触发视图更新、vue向响应式对象添加或删除属性
- 基于c++11新标准开发一个支持多线程高并发的网络库
- Android Proguard Questions
- 从短信类到短信平台之设计篇
- 从h264码流中获取图像的宽高---版本1 (移植于ffmpeg)
- CentOS下使用SVN实现多项目管理配置方案
- 语音识别技术是什么_语音识别技术应用领域介绍
- 鲁班H5页面生成工具源码
- 熟练使用Wireshark排除网络故障的方法
- 实验二 数字类型及其操作(新)
- 如何选购计算机主板电池,电脑主板电池型号的选择和更换
- java excel 批注_Java 添加、读取和删除 Excel 批注的操作代码
- 壹佰大米时代公司研究报告
热门文章
- 山东华为服务器安装系统,山东云服务器平台安装
- 西南交通大学计算机专硕调剂,2019年西南交通大学接收调剂信息
- basler相机参数简要中文说明_Basler嵌入式视觉解决方案- 现推出首款适用于NXP(恩智浦)i.MX 8应用处理器系列的产品...
- mysql vip_MySQL高可用集群的VIP切换
- 【 FPGA 】BUFHCE 案例浅析
- IBM Java多线程 - 6.其它线程 API 详细信息
- 页面之间url传值,传循环数据里的值成功传值成功接收(动态数据传值)
- sqlplus 如何连接到指定数据库,并创建用户与授权
- MATLAB与C#混合编程
- 1000内同时被3,5,7整除的数