网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月27日漏签0天
程序猿吧 关注:21,638贴子:280,507
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 15回复贴,共1页
<<返回程序猿吧
>0< 加载中...

程序猿大神求帮忙!!!下个星期二就交c++大作业了!!!T_T

  • 只看楼主
  • 收藏

  • 回复
  • 假情假意丶
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求贪吃蛇的c++代码!!!!!!!!
万分感谢!!!!!!!!!!!
感激不尽!!!!!!!!!!!
可怜可怜我吧!!!!!!!
要求:
1. 在画面中实现蛇的移动
2. 通过键盘控制蛇的移动方向
3. 当蛇到达屏幕边界时自动转向,沿着相反方向移动
4. 贪吃蛇经过的地方“食物”被吞食
5. 记录游戏运行时间
6. 当全部食物被吃光,游戏即为胜利
7. 用文件保存各个用户的游戏记录
拜托了!!!!!!!!!


  • 假情假意丶
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用vc编译就好 不要太高端 不要吓死我界面就随便一点就好了


2026-02-27 02:49:09
广告
不感兴趣
开通SVIP免广告
  • 左I瞳
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看到这个头像我就进来了,和我前女友头像一样。。


  • 贴吧用户_0XKb6E5245
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用java写更好


  • 嘴角哒笑意丶
  • 意见领袖
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你见过这么标准的十五字么
--------------------哒哒哒 今天没吃药 感觉自己又逗比了


  • 浅浅地浅笑
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream>
#include <fstream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <sstream>
using namespace std;
int exchange(string s)
{
int Int;
stringstream ss;
ss << s;
ss >> Int;
return Int;
}
string change(int s)
{
string String;
stringstream ss;
ss << s;
ss >> String;
return String;
}
void gotoxy(int x,int y)
{
HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
COORD co;
co.X = x,co.Y = y;
SetConsoleCursorPosition(hd,co);
}
struct position
{
public:
int x[1000],y[1000];
int recordx[1000],recordy[1000];
int foodx,foody;
int length;
char key,recordkey;
int score,level,select;
};
position p;
class gameFrame
{
public :
gameFrame();
void score();
void showScore();
};
gameFrame::gameFrame()
{
for(int i=0;i<24;i++)
{
gotoxy(0,i),cout<<"■"<<endl;
}
for(int j=0;j<24;j++)
{
gotoxy(54,j),cout<<"■"<<endl;
}
cout<<"■■■■■■■■■■■■■■■■■■■■■■■■■■■■";
gotoxy(0,0),cout<<"■■■■■■■■■■■■■■■■■■■■■■■■■■■■";
}
void gameFrame::score()
{
gotoxy(67,3),cout<<"贪吃蛇";
gotoxy(60,5),cout<<"等级:";
gotoxy(60,7),cout<<"分数:";
gotoxy(60,9),cout<<"操作说明:";
gotoxy(70,9),cout<<"wsad控制上";
gotoxy(60,10),cout<<"下左右,space暂停游戏";
}
void gameFrame::showScore()
{
gotoxy(66,7),cout<<p.score;
gotoxy(66,5),cout<<p.level;
}
class Snake
{
gameFrame f;
public :
Snake();
void move();
void control();
void death();
void food();
};
Snake::Snake()
{
p.level = 1;
p.score = 0;
p.length = 2;
p.x[0] = 24,p.y[0] = 12;
p.recordx[0] = p.x[0],p.recordy[0] = p.y[0];
for(int i=0;i<p.length;i++)
{
p.x[i+1] = p.x[i] - 2,p.y[i+1] = p.y[i];
p.recordx[i+1] = p.x[i+1],p.recordy[i+1] = p.y[i+1];
gotoxy(p.x[i+1],p.y[i+1]),cout <<"■";
}
gotoxy(p.x[0],p.y[0]),cout<<"◆";
}
void Snake::move()
{
gotoxy(p.recordx[p.length],p.recordy[p.length]),cout <<" "; //擦除蛇尾
gotoxy(p.x[0],p.y[0]),cout <<"◆";
for(int i = 0;i < p.length;i++)
{
p.x[i+1] = p.recordx[i],p.y[i+1] = p.recordy[i];
gotoxy(p.x[i+1],p.y[i+1]),cout <<"■";
}
for(i = 0;i <= p.length;i++)
p.recordx[i] = p.x[i],p.recordy[i] = p.y[i];
}
void Snake::control()
{
p.recordkey = *d*;
int mark = 0; //防止不断输出空格(用于掩盖暂停文字)
while(p.key != 27)
{
if(kbhit())
{
p.key = getch();
}
if(p.key == *d*)
{
if(p.recordkey == *a*)
p.x[0] -= 2;
else
{
p.x[0] += 2;
p.recordkey = p.key ;
}
move();
}
if(p.key == *a*)
{
if(p.recordkey == *d*)
p.x[0] += 2;
else
{
p.x[0] -= 2;
p.recordkey = p.key;
}
move();
}
if(p.key == *w*)
{
if(p.recordkey == *s*)
p.y[0]++;
else
{
p.y[0]--;
p.recordkey = p.key;
}
move();
}
if(p.key == *s*)
{
if(p.recordkey == *w*)
p.y[0]--;
else
{
p.y[0]++;
p.recordkey = p.key;
}
move();
}
if(p.key == * *)
{
gotoxy(58,18),cout<<"游戏暂停,按任意键继续...";
mark = 1;
}
if(mark == 1&&p.key !=* *)
{
gotoxy(58,18),cout<<" ";
mark = 0;
}
//食物捕捉
if(p.foodx ==p.x[0]&&p.foody == p.y[0])
{
cout <<*\a*;
food();
p.score += 100;
switch(p.score)
{
case 0: break;
case 400: p.level=2;break;
case 800: p.level=3;break;
case 1200: p.level=4;break;
case 2000: p.level=5;break;
default :;
}
f.showScore();
p.length ++;
}
death();
Sleep((int)500/p.level);
}
}
void Snake::death()
{
//撞到墙
if(p.x[0] == 0||p.x[0] == 54||p.y[0] == 0||p.y[0] == 24)
p.key = 27;
//撞到自己
if(p.length>3)
for(int i = 4;i<=p.length;i++)
{
if(p.x[0] == p.x[i]&&p.y[0] == p.y[i])
p.key = 27;
}
}
void Snake::food()
{
srand((unsigned)time(NULL));//当前时间作种子
//随机产生食物的坐标
p.foodx=rand()%(48-2+1)+2;//产生2到68之间的随机数
if(p.foodx%2!=0) p.foodx=p.foodx+1;//食物图标占两个位置,若为奇数则转化为偶数
p.foody=rand()%(23-1+1)+1;
for(int body=0;body<=p.length;body++)//若产生的食物坐标与小蛇身体重合,则重新产生新的食物坐标
{
if(p.foodx==p.x[body]&&p.foody==p.y[body])
{
p.foodx=rand()%(48-2+1)+2;
if(p.foodx%2!=0) p.foodx++;
p.foody=rand()%(23-1+1)+1;
}
}
gotoxy(p.foodx,p.foody),cout<<"●";
}
class mainFrame
{
public:
mainFrame();
void select();
void clear();
void top10();
void chose();
//system("mode con lines=25 cols=84");
};
mainFrame::mainFrame()
{
system("mode con lines=25 cols=84");
}
void mainFrame::select()
{
gotoxy(37,5),cout <<"THE SNAKE";
gotoxy(35,7),cout <<"1.START GAME";
gotoxy(35,9),cout <<"2.TOP 9";
gotoxy(35,11),cout <<"3.HELP";
gotoxy(35,13),cout <<"4.ABOUT GAME";
gotoxy(10,15),cout <<"SELECT:";
cin>>p.select;
}
void mainFrame::clear()
{
gotoxy(37,5),cout <<" ";
gotoxy(35,7),cout <<" ";
gotoxy(35,9),cout <<" ";
gotoxy(35,11),cout <<" ";
gotoxy(35,13),cout <<" ";
gotoxy(10,15),cout <<" ";
}
void mainFrame::top10()
{
string score[10];
ifstream fin("top.txt",ios::in);
for(int i = 0;i < 10;i++)
{
getline(fin,score[i]);
}
fin.close();
ofstream fout("top.txt",ios::in);
for(i = 0;i<10;i++)
{
if(p.score < exchange(score[i])&&p.score >= exchange(score[i+1]))
{
for(int j = 9;j > i+1;j--)
{
score[j] = score[j-1];
}
score[i+1] = change(p.score);
}
else if(p.score > exchange(score[0]))
{
for(int j = 9;j >= i+1;j--)
{
score[j] = score[j-1];
}
score[0] = change(p.score);
}
}
for(i=0;i<10;i++)
{
fout << score[i] <<endl;
}
}
void mainFrame::chose()
{
}
void main()
{
next:
mainFrame mf;
mf.select();
if(p.select == 1)
{
mf.clear();
gameFrame f;
Snake s;
s.food();
f.score();
s.control();
mf.top10();
}
if(p.select == 2)
{
string s[9];
mf.clear();
ifstream fin("top.txt",ios::in);
gotoxy(38,3),cout <<"RANK" << " " << "SCORE";
for(int i = 0;i<9;i++)
{
getline(fin,s[i]);
gotoxy(38,i+5),cout <<i+1<< " " << s[i] << endl;
}
cout <<"input *1* to back to the mainFrame:" << endl;
cin >> p.select;
if(p.select == 1)
{
mf.clear();
goto next;
}
}
if(p.select == 3)
{
mf.clear();
gotoxy(27,6),cout << "This game called Gluttonous Snake!"<< endl;
gotoxy(0,10),cout <<"input *1* to back to the mainFrame:" << endl;
cin >> p.select;
if(p.select == 1)
{
mf.clear();
goto next;
}
}
int i;
scanf("%c",&i);
}
以前写的,写的特别乱,你说的一些功能可能没有,自己改改吧


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 15回复贴,共1页
<<返回程序猿吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示