loadrunner录制接口怎么录制接口测试脚本

golang 1.5小时,200行代码写一个控制台贪吃蛇 - 为程序员服务
为程序员服务
1.5小时,200行代码写一个控制台贪吃蛇
go语言(使用了cgo与硬件交互),算上空行和注释共200行代码
实现了贪吃蛇的基本功能,好吧你不能指望我还加上声音啥的,我不会啊
很多时间花在"图形"界面上了,其实时间还可以缩短的
package main
&math/rand&
#include &windows.h&
#include &conio.h&
// 使用了WinAPI来移动控制台的光标
void gotoxy(int x,int y)
c.X=x,c.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
// 从键盘获取一次按键,但不显示到控制台
int direct()
return _getch();
import &C& // go中可以嵌入C语言的函数
// 表示光标的位置
type loct struct {
area = [20][20]byte{} // 记录了蛇、食物的信息
// 当前是否有食物
// 当前蛇头移动方向
// 当前蛇头位置
// 当前蛇尾位置
// 当前蛇身长度
// 随机生成一个位置,来放置食物
func place() loct {
k := rand.Int() % 400
return loct{k / 20, k % 20}
// 用来更新控制台的显示,在指定位置写字符,使用错误输出避免缓冲
func draw(p loct, c byte) {
C.gotoxy(C.int(p.i*2+4), C.int(p.j+2))
fmt.Fprintf(os.Stderr, &%c&, c)
func init() {
// 初始化蛇的位置和方向、首尾;初始化随机数
head, tail = loct{4, 4}, loct{4, 4}
lead, size = 'R', 1
area[4][4] = 'H'
rand.Seed(int64(time.Now().Unix()))
// 输出初始画面
fmt.Fprintln(os.Stderr,
#-----------------------------------------#
#-----------------------------------------#
// 我们使用一个单独的go程来捕捉键盘的动作,因为是单独的,不怕阻塞
go func() {
for { // 函数只写入lead,外部只读取lead,无需设锁
switch byte(C.direct()) {
lead = 'U'
lead = 'L'
lead = 'R'
lead = 'D'
lead = 'P'
func main() {
// 程序更新周期,400毫秒
time.Sleep(time.Millisecond * 400)
// 暂停,还是要有滴
if lead == 'P' {
// 放置食物
if !food {
give := place()
if area[give.i][give.j] == 0 { // 食物只能放在空闲位置
area[give.i][give.j] = 'F'
draw(give, '$') // 绘制食物
food = true
// 我们在蛇头位置记录它移动的方向
area[head.i][head.j] = lead
// 根据lead来移动蛇头
switch lead {
// 判断蛇头是否出界
if head.i & 0 || head.i &= 20 || head.j & 0 || head.j &= 20 {
C.gotoxy(0, 23) // 让光标移动到画面下方
// 跳出死循环
// 获取蛇头位置的原值,来判断是否撞车,或者吃到食物
eat := area[head.i][head.j]
if eat == 'F' { // 吃到食物
food = false
// 增加蛇的尺寸,并且不移动蛇尾
} else if eat == 0 { // 普通移动
draw(tail, ' ') // 擦除蛇尾
// 注意我们记录了它移动的方向
dir := area[tail.i][tail.j]
// 我们需要擦除蛇尾的记录
area[tail.i][tail.j] = 0
// 移动蛇尾
switch dir {
} else { // 撞车了
C.gotoxy(0, 23)
draw(head, '*') // 绘制蛇头
case size & 22:
fmt.Fprintf(os.Stderr, &Faild! You've eaten %d $\\n&, size-1)
case size & 42:
fmt.Fprintf(os.Stderr, &Try your best! You've eaten %d $\\n&, size-1)
fmt.Fprintf(os.Stderr, &Congratulations! You've eaten %d $\\n&, size-1)
//该片段来自于
您可能的代码
相关聚客文章
相关专栏文章Python&实现贪吃蛇的代码
#&-*-&coding:&cp936&-*-
import pygame, sys
from pygame.locals import *
from random import randrange
up = lambda x:(x[0]-1,x[1])
down = lambda x :(x[0]+1,x[1])
left = lambda x : (x[0],x[1]-1)
right = lambda x : (x[0],x[1]+1)
tl = lambda x :x&3
and x+1 or 0
tr = lambda x :x==0 and 3 or x-1
dire = [up,left,down,right]
move = lambda
x,y:[y(x[0])]+x[:-1]
grow = lambda x,y:[y(x[0])]+x
s = [(5,5),(5,6),(5,7)]
food = randrange(0,30),randrange(0,40)
FPSCLOCK=pygame.time.Clock()
pygame.init()
pygame.display.set_mode((800,600))
pygame.mouse.set_visible(0)
screen = pygame.display.get_surface()
running = True
while running:
&&& time_passed
= FPSCLOCK.tick(30)
&&& if times&=150:
times =0.0
s = move(s,d)
times +=time_passed
&&& for event in
pygame.event.get():
if event.type == QUIT:
&&&&&&&&&&&
running = False
&&&&&&&&&&&
pygame.quit()
&&&&&&&&&&&
sys.exit()
if event.type == KEYDOWN and event.key == K_UP:
&&&&&&&&&&&
s = move(s,d)
if event.type == KEYDOWN and event.key == K_LEFT:
&&&&&&&&&&&
d=dire[tl(dire.index(d))]
if event.type == KEYDOWN and event.key == K_RIGHT:
&&&&&&&&&&&
d=dire[tr(dire.index(d))]
&&& if s[0]==food:
s = grow(s,d)
food =randrange(0,30),randrange(0,40)
&&& if s[0] in s[1:]
or s[0][0]&0
or s[0][0] &= 30
or s[0][1]&0
or s[0][1]&=40:
screen.fill((0,0,0))
&&& for r,c in s:
pygame.draw.rect(screen,(255,0,0),(c*20,r*20,20,20))
pygame.draw.rect(screen,(0,255,0),(food[1]*20,food[0]*20,20,20))
pygame.display.update()
#详细出处参考:#
如果要更改蛇的起始位置, 修改 s = [(5,5),(5,6),(5,7)]
,把第一个括号中的(5,5)分别修改为0-20和0-30 之间的数字,越大越好。
如果要加快速度,把if
times&=150:& 这句的150改为30-150
之间的数字即可,数字越小,速度越快。
如果要设置蛇的颜色,把
&pygame.draw.rect(screen,(255,0,0),(c*20,r*20,20,20))&
这句中的(255,0,0)按照如下颜色设置
更改目标的颜色,把
&pygame.draw.rect(screen,(0,255,0),(food[1]*20,food[0]*20,20,20))
这句中的(0,255,0)按如下颜色对应
更改背景色,设置 screen.fill((0,0,0))
WHITE = (255, 255, 255)& 这是白色
BLACK = (0, 0,
RED = (255, 0,
GREEN = (0, 255,
0)&&&&&&这是绿色
DARKGREEN = (0, 155,
0)&&这是深绿色
DARKGRAY = (40, 40, 40)& 深灰色
更多RGB颜色代码
Table 17-1: Colors and their RGB values.
RGB Values
(0, 255, 255)
(0, 0, 255)
Cornflower Blue
(100, 149, 237)
(255, 0, 255)
(128, 128, 128)
(0, 128, 0)
(0, 255, 0)
(128, 0, 0)
(0, 0, 128)
(128, 128, 0)
(128, 0, 128)
(255, 0, 0)
(192, 192, 192)
(0, 128, 128)
(255, 255, 255)
(255, 255, 0)
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。贪吃蛇的蛇身逐步运动的实现_C++,C语言_ThinkSAAS
贪吃蛇的蛇身逐步运动的实现
贪吃蛇的蛇身逐步运动的实现
内容来源: 网络
主要使用结构数组和结构指针,再用easyx图形库进行的绘图,以供讨论和学习/*
*项目名称《贪吃蛇的蛇身逐步运动的实现》
主要使用结构数组和结构指针,再用easyx图形库进行的绘图,以供讨论和学习。
因时间有限,没有考虑使用new来实现蛇身的长度的可控,仅使用初始值来实现,
其次是未使用全局变量,整体比较凌乱,希望大家发现其他问题,欢迎指出!!!
////////////by 润笔武神
#include &graphics.h&
// 就是需要引用这个图形库
#include &conio.h&
//建立储存蛇身的结构体
struct snack
//决定方向
int fangxiang=3;//w=0,s=1,a=2,d=3
// 按键变量
char anjian=0;
//调整坐标关系
int tiaozheng(struct snack *a);
// 移动函数
int move(struct snack *a);
//打印图像
int print(struct snack *a);
int main()
initgraph(640, 480);
struct snack na[10] ={0};
while(anjian!=&q&)
if(kbhit())
anjian=getch();
switch(anjian)
//w=0,s=1,a=2,d=3
if(fangxiang!=1)
fangxiang=0;
if(fangxiang!=0)
fangxiang=1;
if(fangxiang!=3)
fangxiang=2;
if(fangxiang!=2)
fangxiang=3;
//清屏函数
cleardevice();
print(na);
//避免程序运行过快
Sleep(60);
tiaozheng(na);
closegraph();
int tiaozheng(struct snack *a)
//从最后以个元素开始,依次进行坐标的传递
for(int i=9;i&0;i--)
a[i].x=a[i-1].x;
a[i].y=a[i-1].y;
int print(struct snack *a)
for(int i=0;i&10;i++)
//进行绘图
putpixel(a[i].x,a[i].y,RGB(100-10*i,255,100-10*i));
circle(a[i].x,a[i].y,5);
int move(struct snack *a)
//w=0,s=1,a=2,d=3
switch(fangxiang)
//按键响应,并对超出界面的点进行重置
a[0].y=a[0].y-v;
if(a[0].y&0)
a[0].y=480;
a[0].y=a[0].y+v;
if(a[0].y&480)
a[0].x=a[0].x-v;
if(a[0].x&0)
a[0].x=640;
a[0].x=a[0].x+v;
if(a[0].x&640)
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信50行代码实现贪吃蛇(具体思路及代码)
字体:[ ] 类型:转载 时间:
在50行代码内来实现一个贪吃蛇,具体实现代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你
最近一直在准备用来面试的几个小demo,为了能展现自己,所以都是亲自设计并实现的,其中一个就是在50行代码内来实现一个贪吃蛇,为了说明鄙人自己练习编程的一种方式--把代码写短,为了理解语言细节。
代码如下: &SPAN style="FONT-SIZE: 14px"&import sys, pygame from pygame.locals import * from random import randrange up =lambda x:(x[0]-1,x[1]) down = lambda x :(x[0]+1,x[1]) left = lambda x : (x[0],x[1]-1) right = lambda x : (x[0],x[1]+1) tl = lambda x :x&3 and x+1 or 0 tr = lambda x :x==0 and 3 or x-1 dire = [up,left,down,right] move = lambda x,y:[y(x[0])]+x[:-1] grow = lambda x,y:[y(x[0])]+x s = [(5,5),(5,6),(5,7)] d = up food = randrange(0,30),randrange(0,40) FPSCLOCK=pygame.time.Clock() pygame.init() pygame.display.set_mode((800,600)) pygame.mouse.set_visible(0) screen = pygame.display.get_surface() screen.fill((0,0,0)) times=0.0 while True: time_passed = FPSCLOCK.tick(30) if times&=150: times =0.0 s = move(s,d) else: times +=time_passed for event in pygame.event.get(): if event.type == QUIT: sys.exit() if event.type == KEYDOWN and event.key == K_UP: s = move(s,d) if event.type == KEYDOWN and event.key == K_LEFT: d=dire[tl(dire.index(d))] if event.type == KEYDOWN and event.key == K_RIGHT: d=dire[tr(dire.index(d))] if s[0]==food: s = grow(s,d) food =randrange(0,30),randrange(0,40) if s[0] in s[1:] or s[0][0]&0 or s[0][0] &= 30 or s[0][1]&0 or s[0][1]&=40: break screen.fill((0,0,0)) for r,c in s: pygame.draw.rect(screen,(255,0,0),(c*20,r*20,20,20)) pygame.draw.rect(screen,(0,255,0),(food[1]*20,food[0]*20,20,20)) pygame.display.update()&/SPAN&
游戏截图:说明: 1.其实不用pygame,在把一些条件判断改改,估计可以再短一半。。等以后自己python水平高了再回来试试。。 2.但是50行的贪吃蛇代码,还是有可读性的,写的太短就真没有了。。 3.关键是把旋转,移动,等等这些算法用lamda表达式实现,还有函数对象。。 4.哪位“行者”能写的更短,小弟愿意赐教.... 作者:aiqier
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 loadrunner12录制脚本 的文章

 

随机推荐