新人求教,C语言打地鼠教案

小白求教【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:530,087贴子:
小白求教收藏
#include &stdio.h&
void fun(char *ss);void main (){char *ss=&abcDEF&; fun(ss);}void fun(char *ss){char *p=NULL; p= while (*ss) {ss++;
if ((*ss&='A')&&(*ss&='Z'))
*ss=*ss+32;
ss++; } ss=p; printf(&%s\n&,ss);}为啥运行不了啊,我觉得是while语句出现了问题,可是问题出现在哪了呢。
你一定不了解杜威的压差表
错误提示贴上来
运行结果就是这样啊
&abcDEF&是常量,不可修改。先改成char ss[]=&abcDEF&试试
这程序干啥的?
#include &stdio.h&#include&string.h& void fun(char *ss);void main (){char s[20]=&abcDEF&,*ss=s;fun(ss);}void fun(char *ss){char *p=NULL;j=strlen(ss);p=while (j&0){if ((*ss&='A')&&(*ss&='Z'))*ss=*ss+32;ss++;j--;}ss=p;printf(&%s\n&,ss);}楼主可以这样,这个结果是正确的。
你想得到的结果是什么样的
请问这个程序是什么意思?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或/*打地鼠游戏练习*/#include&s;
/*打地鼠游戏练习*/#include &stdio.h&#include &stdlib.h&#include &time.h&int main() {int times = 0/*游戏次数*/, mousey = 0/*老鼠所在行号*/, mousex = 0/*老鼠所在列号*/, posy = 0/*锤子所在行号*/, posx = 0/*锤子所在列号*/, hits = 0/*打中次数*/, missed = 0/*错过次数*/;int num = 0, row = 0, col = 0;srand(time(0));//获得游戏次数printf(&请输入次数:&);scanf(&%d&, &times);//打印地图printf(&***\n***\n***\n&);//游戏过程for (num = 1;num &=num++) {//获得老鼠和锤子的位置mousey = rand() % 3 + 1;mousex = rand() % 3 + 1;do {printf(&请输入锤子所在的位置:&);scanf(&%d %d&, &posy, &posx);} while (posy & 1 || posy & 3 || posx & 1 || posx & 3);//修改打中和错过的个数if (mousey == posy && mousex == posx) {hits++;}else {missed++;}//打印地图for (row = 1;row &= 3;row++) {for (col = 1;col &= 3;col++) {if (row == posy && col == posx) {printf(&O&);}else if (row == mousey && col == mousex) {printf(&X&);}else {printf(&*&);}}printf(&\n&);}//提示是否打中if (mousey == posy && mousex == posx) {printf(&打中了\n&);}else {printf(&没打中\n&);}//打印总成绩printf(&打中%d次,错过%d次\n&, hits, missed);}return 0;}
三亿文库包含各类专业文献、外语学习资料、各类资格考试、行业资料、应用写作文书、高等教育、34打地鼠游戏c语言编写等内容。 
 4个 4个 若干 1.2 设计要求要求作品完成后,可以实现简易打地鼠游戏的功能。 ...《现代通信技术》课程设计 2.2 软件设计游戏程序应用 C 语言编译, 主要使用...  打地鼠源代码_计算机软件及应用_IT/计算机_专业资料。打地鼠 &HTML&&HEAD&&TITLE...C++迷宫游戏源代码 3页 1下载券 聚类分析(C均值,K均值) 17页 1下载券 贪...  数字电路实验-打地鼠游戏设计与实现_计算机软件及应用...C.进程显示模块: 1.计分模块:通过接收得分脉冲信号...总结起来,有以下几点: 1.加深了对VHDL语言的理解,...  打地鼠游戏设计_电子/电路_工程科技_专业资料。1:游戏标题、倒计时“3、2、1”、Gameover、地鼠洞 步骤 2-舞台脚本 步骤 3-画锤子的两个造型 步骤 4-锤子...  { boolean isOver=//设置标记,游戏是否结束 private String dir=&./...(&打地鼠&); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.set...  ___ “打地鼠”游戏程序设计 一、 实验目的与要求 (1)实验目的:通过编写调试“打地鼠”游戏程序,分析了解“打地鼠” 游戏的功能实现过程,掌握游戏设计的有关知识...  本文主要对使用单片机设计打打地鼠游戏机进行了分析,并介绍了基于单片机打地 鼠...[4] 赵亮,侯国锐.单片机 C 语言编程与实例[M].北京:人民邮电出版社. [5]...  一、首先,把打地鼠游戏发给大家,让大家先玩一遍。 二、 然后提问学生这个游戏中有什么元素, 让学生抢答, 把学生说出的答案一一写在黑板上, 然后引出做出这个游戏...  安卓应用 实现简易打地鼠游戏_计算机软件及应用_IT/计算机_专业资料。本文档实现了一个简易的安卓app打地鼠游戏 实习笔记 学班专姓学 院级业名号 计算机科学与...C游戏(1)
第一章&&项目描述
1.1功能描述
打僵尸采用编写,具体实现功能:
A.仿照打地鼠游戏编写,只不过显示的是僵尸
B.僵尸出现是慢慢冒出来的
C.能统计得分,同时出现僵尸数量随分数上升
D.打击僵尸有爆炸特效
1.2所需技术
透明贴图,爆炸动画处理
第二章&&总体设计
2.1打僵尸运行流程
太简单了,就像打地鼠。
第三章&&详细设计
3.1背景地图
游戏背景地图是一张植物大战僵尸草地的图片,其中每个格子对应着将要出现的僵尸的位置。
hBmpBackground=(HBITMAP)LoadImage(hinstance,MAKEINTRESOURCE(IDB_BITMAPground), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
void backgroudDraw()//游戏进程背景绘制
SelectObject(hdcImageStore, hBmpBackground );
BitBlt( hdcImageDraw, 0,0, C_TILE_W*C_MAP_W,C_TILE_H*C_MAP_H, hdcImageStore,0, 0 , SRCCOPY);
hBmpBackground是一个全局变量,从资源中获得背景地图的句柄,然后载入到内存位图中。
3.2僵尸出现
这里最多同时出现个僵尸。定义一个僵尸结构体数组,这里只有个元素,对应的就是出现的僵尸。当为时,显示出来这个僵尸。
typedef struct
bool bActiveF
// λÖÃX
// λÖÃY
}__ZOMBIE;
__ZOMBIE ZOMBIE[3];&span style=&font-family: 宋体; font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255);&&地图也同时定义一个结构体。地图是绿色与浅绿色相间的就是每个格子,一共有&/span&&span style=&font-size: 12 background-color: rgb(255, 255, 255); font-family: 'Times New Roman';&&5&/span&&span style=&font-family: 宋体; font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255);&&行,&/span&&span style=&font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255); font-family: 'Times New Roman';&&9&/span&&span style=&font-family: 宋体; font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255);&&列格子,这里用一个&/span&&span style=&font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255); font-family: 'Times New Roman';&&5*9&/span&&span style=&font-family: 宋体; font-size: 12 text-indent: 21 background-color: rgb(255, 255, 255);&&二维数组表示。&/span&typedef struct {
char bExisteF
// λÖÃX
__MAP MAP[5][9];
地图初始化,把二维数组的,坐标与具体的行列号对应起来。
这里的坐标是左上角为原点的屏幕坐标。后面只要知道的行列号就知道对应的坐标。
typedef struct {
char bExisteF
// λÖÃX
__MAP MAP[5][9];
地图初始化,把二维数组的,坐标与具体的行列号对应起来。
这里的坐标是左上角为原点的屏幕坐标。后面只要知道的行列号就知道对应的坐标。
void mapInit ()
for ( i = 0; i & 5; i++) {
for (j = 0; j & 9; j++) {
MAP[i][j].iXmap=30+80*j;
MAP[i][j].iYmap=80+100*i;
3.2.1随机产生出现坐标
随机产生僵尸的出现坐标。主要是随机产生,数组的每个元素。其中数组每个元素随机为的值,数组每个元素随机为的值,对应的三个僵尸的初始位置就置为地图二维数组对应行,列的元素位置。同时地图二维数组上相应位置标记有僵尸,置对应号僵尸,置对应这个格子是号僵尸。
void coordChange ()
int i,j,k;
static int iAZomX[3]={0,0,0};
static int iAZomY[3]={0,0,0};
for ( i = 0; i & 3; i++) {
iAZomX[i]=rand()%5;
iAZomY[i]=rand()%9;
for ( i = 0;i & 3;i++ ) {
ZOMBIE[i].iXpos=MAP[iAZomX[i]][iAZomY[i]].iX
ZOMBIE[i].iYpos=MAP[iAZomX[i]][iAZomY[i]].iY
for ( i = 0; i & 5; i++) {
for (j = 0; j & 9; j++) {
if ( i== iAZomX[0] && j == iAZomY[0])
MAP[i][j].bExisteFlg=1;
else if ( i== iAZomX[1] && j == iAZomY[1])
MAP[i][j].bExisteFlg=2;
else if ( i== iAZomX[2] && j == iAZomY[2])
MAP[i][j].bExisteFlg=3;
MAP[i][j].bExisteFlg=0;
3.2.2随分数多少产生僵尸
随着分数的增加,依次激活相应数量的僵尸,即使僵尸的标志置为,激活了的僵尸就会显示出来。
randomCreate ( DWORD dwTime )
static long int iLastUpdate=0;
if( ( dwTime - iLastUpdate )&100 )
//µ±Ê±¼ä´óÓÚ100ʱ²¥·ÅÏÂÒ»¸ö¶¯»­
iLastUpdate = dwT
cSumFlg++;
if(cSumFlg &= 12) {
if(iScore & 100)
ZOMBIE[0].bActiveFlg=1;
if( 100 &= iScore &&iScore & 200) {
ZOMBIE[1].bActiveFlg=1;
ZOMBIE[0].bActiveFlg=1;
if( 200 &= iScore) {
ZOMBIE[1].bActiveFlg=1;
ZOMBIE[2].bActiveFlg=1;
ZOMBIE[0].bActiveFlg=1;
coordChange();
cSumFlg = 0;
3.2.3僵尸慢慢冒出头效果
使用全局变量,在函数中是会自增的,每次贴僵尸图与结合起来。僵尸显示的纵坐标,每次显示在方向递增。
&pre name=&code& class=&cpp&&void zombieDraw(DWORD dwTime
int i = 0;
SelectObject(hdcImageStore, hBmpZombie);
for (i = 0; i & 3; i++) {
ZOMBIE[i].bActiveFlg == 1) {
transparentPaint( hdcImageDraw,ZOMBIE[i].iXpos, ZOMBIE[i].iYpos+100-cSumFlg*10, 80, cSumFlg*10, 0,0, RGB(255,255,255) );
3.3打击僵尸使其消失
响应鼠标左键点击消息,扫描地图二维数组,当鼠标点击坐标落在对应的地图某个格子中,判断那个格子中是否有僵尸标记,有的话清空地图格子的僵尸标记,并且把对应僵尸数组中那个元素的属性置零。这样在绘图中因为某僵尸的为就不会继续绘制那个僵尸了,实现打死僵尸效果。
for ( row = 0; row & 5; row++) {
for (col = 0; col & 9; col++) {
if ( MAP[row][col].bExisteFlg!=0&&LOWORD(lParam)&=MAP[row][col].iXmap+80&&LOWORD(lParam)&=MAP[row][col].iXmap&&HIWORD(lParam)&=MAP[row][col].iYmap+100&&HIWORD(lParam)&=MAP[row][col].iYmap) {
if(MAP[row][col].bExisteFlg == 1)
ZOMBIE[0].bActiveFlg=0;
else if(MAP[row][col].bExisteFlg == 2)
ZOMBIE[1].bActiveFlg=0;
else if(MAP[row][col].bExisteFlg == 3)
ZOMBIE[2].bActiveFlg=0;
cHitFlg=1;
MAP[row][col].bExisteFlg=0;
3.4爆炸效果
首先定义一个爆炸结构体。
struct Explosion
//爆炸位置x
// 爆炸位置y
int m_nCurF
// 爆炸类型
int m_oldU
// 播放下一张连续图更新时间
struct Explosion *
struct Explosion
//全局爆炸链表
3.4.1初始化爆炸链表
爆炸链表里面能存十个元素,说明同时能进行十个爆炸。把当前帧置为,这样每次从爆炸链表里取某个还没播放的元素进行爆炸的播放。
void bombInit()
struct Explosion *e;
//´´½¨±¬Õ¨Á´±í
if(Explosionhead==NULL)
Explosionhead=(struct Explosion*)malloc(sizeof(struct Explosion));
Explosionhead-&next=NULL;
for( i=0; i&10; i++ )
e-&next=(struct Explosion*)malloc(sizeof(struct Explosion));
e-&m_nCurFrame=-1;
e-&m_oldUpdate=0;
e-&m_nType=0;
e-&next-&next=NULL;
3.4.2激活爆炸链表某元素
遍历爆炸链表,找到还没播放帧为的元素,即那个元素没处于播放状态,把它播放帧置零,表示激活了,并把相应的打击的坐标传入。
void PlayExplosion( int nX, int nY, int nType )
struct Explosion *e;
// ±¬Õ¨´¦Àí
for( i=0; i&10; i++ )
// if( !((e-&m_nCurFrame==-1) ? false : true) )
//ÅжÏÕâ¸ö±¬Õ¨³ÉÔ±ÊÇ·ñÒѾ­±»¼¤»îÁË Èç¹ûû±»¼¤»î
if( e-&m_nCurFrame==-1 )
e-&p_nX= nX;
e-&p_nY= nY;
e-&m_nType= nT
e-&m_nCurFrame = (nType==0)?0:0;
//Õâ¸öbreak ÊÇʲôÒâ˼
3.4.3进入爆炸播放帧
当某爆炸元素处在激活状态,即播放帧不为,进行播放帧随着时间递增。
bool ExplosionEnterFrame(int *nCurFrame , int *nType , int *oldUpdate , DWORD dwTime )
if( *nCurFrame == -1 )
if( ( dwTime - *oldUpdate )&=100 )
//µ±Ê±¼ä´óÓÚ100ʱ²¥·ÅÏÂÒ»¸ö¶¯»­
*oldUpdate = dwT
(*nCurFrame)++;
if( *nType == 0 && *nCurFrame&2 )
//±¬Õ¨ÀàÐÍnTypeΪ0£¬²¥·ÅͼƬÉÙ£¬Ê±¼äÒ²¶Ì£¬Ò»°ãÊÇ»÷ÖÐÕÏ°­Îï
*nCurFrame = -1;
if( *nType == 1 && *nCurFrame&7 )
//±¬Õ¨ÀàÐÍnTypeΪ1£¬½«²¥·ÅÍê7¸öͼƬ£¬Ê±¼ä³¤£¬Ò»°ãÊÇ»÷ÖÐÄ¿±ê
*nCurFrame = -1;
3.4.4绘制爆炸效果
遍历爆炸链表,当某元素播放帧不为时,每次从爆炸的横向长图片中取出与播放帧对应的位置的一小块进行贴图,结合时间播放帧递增,实现换图功能,爆炸的特效得以实现。
void ExplosionDraw(int nX , int nY , int m_nCurFrame)
if( m_nCurFrame != -1 )
//µÈÓÚ-1²»»æÖƱ¬Õ¨
SelectObject(hdcImageStore , hBmpBomb );
transparentPaint( hdcImageDraw, nX-16, nY-16, 32,32, m_nCurFrame*32, 0, RGB(0x0,0x0,0x0) );
// »æÖƱ¬Õ¨³¡Ãæ
void DrawExplosion( )
struct Explosion *e;
for( i=0; i&10; i++ )
ExplosionDraw(e-&p_nX , e-&p_nY , e-&m_nCurFrame);
第四章&&运行结果
设计报告下载
源码,素材实现效果下载
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47161次
积分:1185
积分:1185
排名:千里之外
原创:69篇求教【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:530,087贴子:
vs2015怎么编写c++,新建项目中只能新建空白应用,没有空白项
c语言-达内课程学习,O基础学起只需4-16周便能掌握,适合高中以上初学者!达内培训c语言,O元试学学C语言,,高中以上,学习0压力!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或新人一枚萌德刚刚100。求一个鸟德的tmw字符串打地鼠的或者教下输出手法和起手姿势
多谢各位大神。总感觉升级好累。怪都打不动,各位大神快进来!快进来!
[url]http://bbs.ngacn.cc/read.php?tid=8450436[/url]

我要回帖

更多关于 幼儿园打地鼠教案 的文章

 

随机推荐