求C语言编程很长的程序100多行的

求C语言编程很长的程序100多行的,第1张

C语言写的21点程序!

#include

#include

#include

#define

NULL

0

int

compare(char

sum1,char

sum2)

{

if(sum1>=sum2)

return

1

else

return

0

}

int

breakal(int

sum)

{

if(sum>21)

return

0

else

return

1

}

char

change(int

card)

{

char

ch,n,m,x

switch(card)

{

case

1:

ch='A'

break

case

10:

{

n=1+int(rand()/(RAND_MAX+1.0))

if(n==1)

ch='K'

else

{

m=1+int(rand()/(RAND_MAX+1.0))

if(m==1)

ch='Q'

else

{

x=1+int(rand()/(RAND_MAX+1.0))

if(x==1)

ch='J'

}

}

break

}

}

//以上switch语句用于将数字转换成字符

return

ch

}

void

game()

{

int

i,k,n

char

host_ch,player_ch,host_card[15],player_card[15]

int

host_sum=0,player_sum=0

srand(time(NULL))

for(i=0i<2i++)

{

int

(10.0*rand()/(RAND_MAX+1.0))

player_card[i]=1+int

(10.0*rand()/(RAND_MAX+1.0))

player_ch=change(player_card[i])

if(player_card[i]>1

&&

player_card[i]<10)

//输出玩家抽到的牌的点数

printf("您抽到的第%d张牌是%d\n",i+1,player_card[i])

else

if(player_card[i]==10)

printf("您要到的第%d张牌是%c\n",i+1,player_ch)

else

printf("您要到的第%d张牌是A\n",i+1)

if(player_ch=='A')

//询问判断玩家的A的点值为1或11

{

printf("

您有一张A,您想要A作1还是11?\n")

printf("

1.

1\n"

)

printf("

2.

11\n")

if(scanf("%d",&n)

&&

n==1)

player_card[i]=1

else

player_card[i]=11

}

host_card[i]=1+int

(10.0*rand()/(RAND_MAX+1.0))

host_ch=change(host_card[i])

if(host_ch=='A')

//电脑自动判断庄家的A的点值为1或11

{

k=1+int(rand()/(RAND_MAX+1.0))

if(k==1)

host_card[i]=11

else

host_card[i]=1

}

player_sum+=player_card[i]

//分别对庄家和玩家的点数求和

host_sum+=host_card[i]

}

printf("您现在的总面值为%d\n",player_sum)//输出玩家的总面值

for(i=2i<5i++)

{

if(host_sum<18

&&

host_sum>0)//电脑自动判断庄家是否要牌

{

host_card[i]=1+int

(10.0*rand()/(RAND_MAX+1.0))

host_ch=change(host_card[i])

if(host_ch=='A')

//电脑自动判断庄家的A的点值为1或11

{

k=1+int(rand()/(RAND_MAX+1.0))

if(k==1)

host_card[i]=11

else

host_card[i]=1

}

host_sum+=host_card[i]

}

printf("您还要继续要牌吗?\n")

printf("

1.要\n")

printf("

2.不要\n")

scanf("%d",&k)

if(k==1)

{

{

player_card[i]=1+int

(10.0*rand()/(RAND_MAX+1.0))

player_ch=change(player_card[i])

if(player_ch=='A')

//询问判断玩家的A的点值为1或11

{

printf("您有一张A,您想要A作1还是11?\n")

printf("

1.

1\n"

)

printf("

2.

11\n")

if(scanf("%d",&n)

&&

n==1)

player_card[i]=1

else

player_card[i]=11

printf("您要到的第%d张牌是A\n",i+1)

}

else

printf("您要到的第%d张牌是%d\n",i+1,player_card[i])

player_sum+=player_card[i]

if(i==4)

printf("您手中已有5张牌,一决胜负的时刻到啦!\n")

if(breakal(host_sum)==0)

{

if(breakal(player_sum)==0)

{

printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum)

printf("\nYou

lose..\n")

break

}

}

else

if(breakal(player_sum)==0)

{

printf("您爆牌了!您的牌面值是%d\n

\nYou

lose..\n",player_sum)

break

}

}

if(breakal(host_sum)==0)

{

printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum)

printf("\nCongratulations!

YOu

win!\n")

break

}

}

else

{

printf("庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum)

if(compare(host_sum,player_sum)==1)

printf("\nYou

lose..\n")

else

printf("\nCongratulations!

You

win!\n")

break

}

}

}

int

main()

{

kaishi:

int

n

printf("

欢迎进入21点游戏!\n")

printf("

************************************\n")

printf("

1.开始游戏\n")

printf("

2.退出游戏\n")

printf("

************************************\n")

if(scanf("%d",&n)&&n==1)

game()

else

if(n==2)

{

printf("

******************************\n")

printf("

游戏结束!祝您愉快!\n")

printf("\n\n")

printf("

再见!\n")

printf("

******************************\n")

return

0

}

goto

kaishi

}

贪吃蛇游戏 望采纳

import java.awt.Button

import java.awt.Color

import java.awt.GridLayout

import java.awt.Point

import java.awt.event.KeyEvent

import java.awt.event.KeyListener

import java.util.*

import javax.swing.JFrame

import javax.swing.JOptionPane

public class Snake extends JFrame implements KeyListener{

int Count=0

Button[][] grid = new Button[20][20]

ArrayList<Point>snake_list=new ArrayList<Point>()

Point bean=new Point(-1,-1)//保存随机豆子【坐标】

int Direction = 1//方向标志 1:上2:下 3:左 4:右

//构造方法

public Snake()

{

//窗体初始化

this.setBounds(400,300,390,395)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

GridLayout f=new GridLayout(20,20)

this.getContentPane().setBackground(Color.gray)

this.setLayout(f)

//初始化20*20个按钮

for(int i=0i<20i++)

for(int j=0j<20j++)

{

grid[i][j]=new Button()

this.add(grid[i][j])

grid[i][j].setVisible(false)

grid[i][j].addKeyListener(this)

grid[i][j].setBackground(Color.blue)

}

//蛇体初始化

grid[10][10].setVisible(true)

grid[11][10].setVisible(true)

grid[12][10].setVisible(true)

grid[13][10].setVisible(true)

grid[14][10].setVisible(true)

//在动态数组中保存蛇体按钮坐标【行列】信息

snake_list.add(new Point(10,10))

snake_list.add(new Point(11,10))

snake_list.add(new Point(12,10))

snake_list.add(new Point(13,10))

snake_list.add(new Point(14,10))

this.rand_bean()

this.setTitle("总分:0")

this.setVisible(true)

}

//该方法随机一个豆子,且不在蛇体上,并使豆子可见

public void rand_bean(){

Random rd=new Random()

do{

bean.x=rd.nextInt(20)//行

bean.y=rd.nextInt(20)//列

}while(snake_list.contains(bean))

grid[bean.x][bean.y].setVisible(true)

grid[bean.x][bean.y].setBackground(Color.red)

}

//判断拟增蛇头是否与自身有碰撞

public boolean is_cross(Point p){

boolean Flag=false

for(int i=0i<snake_list.size()i++){

if(p.equals(snake_list.get(i) )){

Flag=truebreak

}

}

return Flag

}

//判断蛇即将前进位置是否有豆子,有返回true,无返回false

public boolean isHaveBean(){

boolean Flag=false

int x=snake_list.get(0).x

int y=snake_list.get(0).y

Point p=null

if(Direction==1)p=new Point(x-1,y)

if(Direction==2)p=new Point(x+1,y)

if(Direction==3)p=new Point(x,y-1)

if(Direction==4)p=new Point(x,y+1)

if(bean.equals(p))Flag=true

return Flag

}

//前进一格

public void snake_move(){

if(isHaveBean()==true){//////////////有豆子吃

Point p=new Point(bean.x,bean.y)//【很重要,保证吃掉的是豆子的复制对象】

snake_list.add(0,p)//吃豆子

grid[p.x][p.y].setBackground(Color.blue)

this.Count++

this.setTitle("总分:"+Count)

this.rand_bean() //再产生一个豆子

}else{///////////////////无豆子吃

//取原蛇头坐标

int x=snake_list.get(0).x

int y=snake_list.get(0).y

//根据蛇头坐标推算出拟新增蛇头坐标

Point p=null

if(Direction==1)p=new Point(x-1,y)//计算出向上的新坐标

if(Direction==2)p=new Point(x+1,y)//计算出向下的新坐标

if(Direction==3)p=new Point(x,y-1)//计算出向左的新坐标

if(Direction==4)p=new Point(x,y+1)//计算出向右的新坐标

//若拟新增蛇头碰壁,或缠绕则游戏结束

if(p.x<0||p.x>19|| p.y<0||p.y>19||is_cross(p)==true){

JOptionPane.showMessageDialog(null, "游戏结束!")

System.exit(0)

}

//向蛇体增加新的蛇头坐标,并使新蛇头可见

snake_list.add(0,p)

grid[p.x][p.y].setVisible(true)

//删除原蛇尾坐标,使蛇尾不可见

int x1=snake_list.get(snake_list.size()-1).x

int y1=snake_list.get(snake_list.size()-1).y

grid[x1][y1].setVisible(false)

snake_list.remove(snake_list.size()-1)

}

}

@Override

public void keyPressed(KeyEvent e) {

if(e.getKeyCode()==KeyEvent.VK_UP &&Direction!=2) Direction=1

if(e.getKeyCode()==KeyEvent.VK_DOWN &&Direction!=1) Direction=2

if(e.getKeyCode()==KeyEvent.VK_LEFT &&Direction!=4) Direction=3

if(e.getKeyCode()==KeyEvent.VK_RIGHT &&Direction!=3) Direction=4

}

@Override

public void keyReleased(KeyEvent e) { }

@Override

public void keyTyped(KeyEvent e) { }

public static void main(String[] args) throws InterruptedException {

Snake win=new Snake()

while(true){

win.snake_move()

Thread.sleep(300)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11215892.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存